Отключение ListView в C #, но по-прежнему отображение текущего выделения

StackOverflow https://stackoverflow.com/questions/14029

  •  08-06-2019
  •  | 
  •  

Вопрос

У меня есть элемент управления ListView, и я пытаюсь найти самый простой / наилучший способ запретить изменение выбранных строк без прячущийся выбранная строка(строки).

Я знаю, что есть HideSelection свойство, но это работает только тогда, когда ListView все еще включен (но не сфокусирован).Мне нужно, чтобы выделение было доступно для просмотра, даже если просмотр списка отключен.

Как я могу это реализовать?

Это было полезно?

Решение

Вы также могли бы создать ListView ownerdraw для владельца.Затем у вас есть полный контроль над тем, как выглядят элементы, независимо от того, выбраны они или нет, или включен сам ListView или нет.DrawListViewItemEventArgs предоставляет способ попросить ListView нарисовать отдельные части элемента, поэтому вам нужно нарисовать только те биты, которые вас интересуют.Например, вы можете нарисовать фон элемента, но оставьте это на усмотрение ListView для рисования текста.

Другие советы

Есть два варианта изменить выбранные строки на отключенные цвета.Или измените все остальные строки, чтобы имитировать, что они отключены, за исключением выбранной.Первый вариант, очевидно, самый простой, а второй вариант, очевидно, потребует дополнительной защиты.

На самом деле я уже использовал первый вариант раньше, и он работает довольно хорошо.Вам просто нужно не забыть вернуть цвета к значениям по умолчанию на случай, если позже в процессе будет выбрана другая строка.

Реализуйте SelectedIndexChanged и сделайте это

    private void listViewABC_SelectedIndexChanged(object sender, EventArgs e)
    {
        listViewABC.SelectedItems.Clear();
    }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top