如何在.net 3.5中禁用listview控件中的项目

时间:2011-03-29 12:03:39

标签: c# .net vb.net listview

在.net 3.5 windows窗体中,我有一个带有“CheckBoxes”= true的列表视图。是否可以调暗或禁用某些项目以防止用户选中该框?

5 个答案:

答案 0 :(得分:17)

您可以使用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;
    }

答案 1 :(得分:3)

你必须自己动手。处理ListView的{​​{1}}事件 - 如果您不希望选择特定项目,请执行以下操作:

ItemSelectionChanged

您可以通过将特定项目变灰,更改字体颜色等来使某个特定项目无法选择。

答案 2 :(得分:1)

我采用了Hans Passant的推荐 - 良好的视觉方法,在我的情况下表示不可操作的项目。 这是一个示例:

    '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

答案 3 :(得分:0)

使用此功能或将显示模式设置为查看而不是编辑!

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;
        }
        }
    }
}

答案 4 :(得分:-2)

您应该将复选框的AutoCheck属性设置为false。

  

AutoCheck - 获取或设置一个值,该值指示单击CheckBox时是否自动更改Checked或CheckState值以及CheckBox的外观。

实际上这只适用于复选框控件。