Отключение ListView в C #, но по-прежнему отображение текущего выделения
Вопрос
У меня есть элемент управления ListView, и я пытаюсь найти самый простой / наилучший способ запретить изменение выбранных строк без прячущийся выбранная строка(строки).
Я знаю, что есть HideSelection
свойство, но это работает только тогда, когда ListView
все еще включен (но не сфокусирован).Мне нужно, чтобы выделение было доступно для просмотра, даже если просмотр списка отключен.
Как я могу это реализовать?
Решение
Вы также могли бы создать ListView ownerdraw для владельца.Затем у вас есть полный контроль над тем, как выглядят элементы, независимо от того, выбраны они или нет, или включен сам ListView или нет.DrawListViewItemEventArgs предоставляет способ попросить ListView нарисовать отдельные части элемента, поэтому вам нужно нарисовать только те биты, которые вас интересуют.Например, вы можете нарисовать фон элемента, но оставьте это на усмотрение ListView для рисования текста.
Другие советы
Есть два варианта изменить выбранные строки на отключенные цвета.Или измените все остальные строки, чтобы имитировать, что они отключены, за исключением выбранной.Первый вариант, очевидно, самый простой, а второй вариант, очевидно, потребует дополнительной защиты.
На самом деле я уже использовал первый вариант раньше, и он работает довольно хорошо.Вам просто нужно не забыть вернуть цвета к значениям по умолчанию на случай, если позже в процессе будет выбрана другая строка.
Реализуйте SelectedIndexChanged и сделайте это
private void listViewABC_SelectedIndexChanged(object sender, EventArgs e)
{
listViewABC.SelectedItems.Clear();
}