如何在.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; }
你必须自己动手。 处理ListView
的ItemSelectionChanged
事件 – 如果您不希望选择特定项,请执行以下操作:
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的外观。
实际上这只适用于复选框控件。