Как отключить элемент в элементе управления listview в .net 3.5

В форматах windows.net 3.5 у меня есть listview с "CheckBoxes" = true. Можно ли отключить или отключить некоторые элементы, чтобы пользователь не мог проверить флажок?

Ответ 1

Вы можете использовать свойства ListBoxItem.ForeColor и UseItemStyleForSubItems, чтобы этот элемент выглядел тусклым. Используйте SystemColors.GrayText, чтобы выбрать цвет темы для отключенных элементов. Избегайте отключения выбора, это предотвращает использование пользователем клавиатуры. Отключить проверку флажка. Например:

    private void listView1_ItemCheck(object sender, ItemCheckEventArgs e) {
        // Disable checking odd-numbered items
        if (e.Index % 2 == 1) e.NewValue = e.CurrentValue;
    }

Ответ 2

Вам нужно катиться самостоятельно. Обрабатывать событие ListView ItemSelectionChanged - если вы не хотите, чтобы какой-либо конкретный элемент можно было выбрать, выполните следующее:

e.Item.Selected = false;

Вы можете сделать определенный элемент недоступным для выбора, поместив его, изменив цвет шрифта и т.д.

Ответ 3

Я принял рекомендацию Ханса Пассана - хороший визуальный подход, который в моем случае означает неприемлемые элементы. Здесь образец:

    'Select all attachements in case user wants to mask or pick and choose
    For i As Integer = 0 To lstView.Items.Count - 1
        If Not Scan.SupportedMasking.Contains(Path.GetExtension(lstView.Items(i).Text)) Then
            lstView.Items(i).ForeColor = SystemColors.GrayText
            lstView.Items(i).Text += " (No masking supported)"
            lstView.Items(i).BackColor = SystemColors.InactiveBorder
            lstView.Items(i).Selected = False
        Else
            lstView.Items(i).Selected = True
        End If
    Next i

Ответ 4

используйте это или установите режим отображения для просмотра insted of edit!

public void SetItemEnabled(ListViewItem item, bool enabled)
{
  if (item != null)
  {
      List<ListViewControl> lvControls =  this.ListViewControls.FindAll(FindListViewControl(item));
      foreach (ListViewControl lvControl in lvControls)
    {
       if (lvControl.Control != null)
       {
        lvControl.Control.Enabled = enabled;
        }
        }
    }
}

Ответ 5

Вы должны установить свойство AutoCheck флажка false.

AutoCheck - Получает или задает значение, указывающее, будут ли значения Checked или CheckState и вид CheckBox автоматически изменяться при щелчке CheckBox.

Фактически это можно использовать только для элемента управления флажком.