Отключение ListView в C#, но отображение текущего выбора
У меня есть элемент управления ListView, и я пытаюсь найти самый простой / лучший способ запретить изменение выбранных строк, не скрывая выбранные строки.
Я знаю, что есть HideSelection
свойство, но оно работает только тогда, когда ListView
оно все еще включено (но не сфокусировано). Мне нужно, чтобы выбор был доступен для просмотра, даже если ListView отключен.
Как я могу это реализовать?
Ответов (3)3
Вы также можете сделать ListView ownerdraw. Затем у вас есть полный контроль над тем, как выглядят элементы, независимо от того, выбраны они или нет, и включен ли сам ListView или нет. DrawListViewItemEventArgs предоставляет способ попросить ListView рисовать отдельные части элемента, поэтому вам нужно рисовать только те части, которые вас интересуют. Например, вы можете нарисовать фон элемента, но оставьте его для ListView для рисования текст.
Есть два варианта, изменить цвета выделенных строк отключенными. Или измените все остальные строки, чтобы имитировать, что они отключены, кроме выбранной. Первый вариант, очевидно, самый простой, а второй вариант, очевидно, потребует дополнительных мер защиты.
Я уже использовал первый вариант раньше, и он работает довольно хорошо. Вам просто нужно не забыть вернуть цвета к значениям по умолчанию, если позже в процессе будет выбрана другая строка.