在.net 3.5 windows窗体中,我有一个带有“CheckBoxes”= true的列表视图。是否可以调暗或禁用某些项目以防止用户选中该框?
答案 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的外观。
实际上这只适用于复选框控件。