【发布时间】:2009-09-10 18:18:14
【问题描述】:
默认情况下,双击 ListViewItem 会切换其 Checked 状态。我只希望通过单击项目的复选框或在突出显示项目时按空格键来更改 Checked 状态。这很容易做到吗?
【问题讨论】:
标签: .net listview listviewitem
默认情况下,双击 ListViewItem 会切换其 Checked 状态。我只希望通过单击项目的复选框或在突出显示项目时按空格键来更改 Checked 状态。这很容易做到吗?
【问题讨论】:
标签: .net listview listviewitem
解决方案涉及 3 个事件和一个 bool 类型的状态变量:
private bool inhibitAutoCheck;
private void listView1_MouseDown(object sender, MouseEventArgs e) {
inhibitAutoCheck = true;
}
private void listView1_MouseUp(object sender, MouseEventArgs e) {
inhibitAutoCheck = false;
}
private void listView1_ItemCheck(object sender, ItemCheckEventArgs e) {
if (inhibitAutoCheck)
e.NewValue = e.CurrentValue;
}
项目检查可以避免转换到另一个检查状态(在 ItemChecked 事件之前调用)。解决方案既简单又可靠。
为了找出答案,我用不同的事件做了一个小测试:
点击时:
双击时:
【讨论】: