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

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

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

你必须自己动手。 处理ListViewItemSelectionChanged事件 – 如果您不希望选择特定项,请执行以下操作:

 e.Item.Selected = false; 

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

我采用了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 

使用它或设置displaymode来查看编辑内容!

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

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

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

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