Выбранный элемент ListView изменил цвет на серый - PullRequest
1 голос
/ 05 октября 2011

При щелчке мышью на другом элементе управления выбранный элемент меняет цвет на серый, а не синий. Я хочу, чтобы он всегда отображал синий цвет для выбранных элементов, таких как ListBox control.

Как я могу это сделать?

Ответы [ 4 ]

4 голосов
/ 05 октября 2011

Надеюсь, вы ищете HideSelection свойство.Свойство HideSelection по умолчанию имеет значение True.Если для этого параметра установлено значение false, выбранный элемент будет выделен, даже если просмотр списка теряет фокус.

ListView1.HideSelection = false;

Получает или задает значение, показывающее, остается ли выделенный элемент в элементе управления выделенным, когда элемент управления теряет фокус.

Когда для этого свойства установлено значение false, выбранные элементы в элементе управления ListView остаются выделенными другим цветом, нежели текущий цвет выбора, указанный операционной системой, когда элемент управления ListView теряет фокус.Это свойство можно использовать для сохранения элементов, выбранных пользователем, видимыми, когда пользователь щелкает другой элемент управления в форме или перемещается в другое окно.

2 голосов
/ 20 ноября 2012

Вы можете попробовать создать свой собственный элемент управления ListView, унаследовав его от исходного элемента управления ListView, а затем переопределить DefWndProc и ввести следующий код:

protected override void DefWndProc(ref Message msg)
{
    if (msg.Msg != 8)
        base.DefWndProc(ref msg);
}  
1 голос
/ 13 февраля 2015

Чтобы сохранить выбранные элементы списка в синем цвете при нажатии на другой элемент управления, выполните следующие действия:

  1. Установите свойство listView HideSelection = True, чтобы система не перекрывала ваши цвета.

  2. Для невыбранных элементов - укажите белый для BackColor и черный для ForeColor в listView SelectedIndexChanged (см. Пример ниже)

  3. Для выбранных элементов - укажите синий для BackColor и белый для ForeColor в listView SelectedIndexChanged (см. Пример ниже)

    For n = 0 To lvwExplPlot.Items.Count - 1
    
        'UNSELECTED
        If lvwExplPlot.Items.Item(n).Selected = False Then
            lvwExplPlot.Items.Item(n).BackColor = Drawing.Color.White
            lvwExplPlot.Items.Item(n).ForeColor = Drawing.Color.Black
    
        'SELECTED
        Else
            lvwExplPlot.Items.Item(n).BackColor = Drawing.Color.DodgerBlue
            lvwExplPlot.Items.Item(n).ForeColor = Drawing.Color.White
        End If
    Next
    
0 голосов
/ 05 октября 2011

Попробуйте,

foreach (ListViewItem item in listView1.SelectedItems)
{
  item.ForeColor = Color.Gray;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...