Сайт для программистов

воскресенье, 4 января 2009 г.

Ширина столбцов у ListView

Всех с Новым Годом!

Сегодня поделюсь с вами одним наблюдением, о котором возможно не все знают. Если вы используете в своих проектах элемент управления ListView в режиме Details, то могли заметить одно неудобство. В некоторых случаях, слова обрезаются по ширине ColumnHeader и это слегка раздражает пользователя. Приходится самому вручную увеличивать ширину столбца, чтобы прочитать весь текст. Первое, что приходит в голову - это самостоятельно вычислять ширину слов с помощью MeasureString.
Но не все так плохо. Если прочитать документацию по свойству ColumnHeader.Width, то можно узнать о двух интересных значениях - это отрицательные значения -1 и -2. Первое значение устанавливает ширину столбца по самому длинному слову в столбце, а второе значение устанавливает ширину по слову, содержащему в самом столбце.
Вы можете установить эти значения в режиме разработки, но обратите внимание, что когда вы нажимаете на кнопку OK в редакторе свойств для ListView, то значения -1 или -2 автоматические заменяются на реальную ширину, которая IDE вычисляет автоматически за нас. Поэтому, если внесете изменения в ListView во время разработки, то еще раз установите нужные значения.
Если вы хотите поддерживать нужные размеры столбцов во время выполнения программы, то делайте это программным способом.

ColumnHeader header;
header.Width = -1;


Этот совет я помещаю на страницу Вопросов и ответов. Кстати, он справедлив и для .NET Compact Framework.

Счастливого вам программирования!

Комментариев нет: