CheckedListBox 中的用户选中项
User checked item in CheckedListBox
我有一个CheckedListBox
。我想知道用户何时选中或取消选中某个项目。我尝试使用 ItemCheck
事件,但即使以编程方式检查项目时它也会触发。我该如何检测?
使用 ItemCheck
事件处理程序是检测用户何时勾选或取消勾选 CheckedListBox
中的项目的正确方法。是的,当项目以编程方式 checked/unchecked 时,它也会触发。
如果您不希望在以编程方式 set/unset 项目时触发事件,您应该事先删除事件处理程序。
假设您的事件处理程序如下所示:
private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
if (e.NewValue == CheckState.Checked)
{
Debug.Print("Checked");
}
else if (e.NewValue == CheckState.Unchecked)
{
Debug.Print("Un-Checked");
}
}
在以编程方式 set/unset 项之前,您应该添加以下行:
this.checkedListBox1.ItemCheck -= this.checkedListBox1_ItemCheck;
在代码中 set/unset 项目完成后,重新添加事件处理程序:
this.checkedListBox1.ItemCheck += this.checkedListBox1_ItemCheck;
我有一个CheckedListBox
。我想知道用户何时选中或取消选中某个项目。我尝试使用 ItemCheck
事件,但即使以编程方式检查项目时它也会触发。我该如何检测?
使用 ItemCheck
事件处理程序是检测用户何时勾选或取消勾选 CheckedListBox
中的项目的正确方法。是的,当项目以编程方式 checked/unchecked 时,它也会触发。
如果您不希望在以编程方式 set/unset 项目时触发事件,您应该事先删除事件处理程序。
假设您的事件处理程序如下所示:
private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
if (e.NewValue == CheckState.Checked)
{
Debug.Print("Checked");
}
else if (e.NewValue == CheckState.Unchecked)
{
Debug.Print("Un-Checked");
}
}
在以编程方式 set/unset 项之前,您应该添加以下行:
this.checkedListBox1.ItemCheck -= this.checkedListBox1_ItemCheck;
在代码中 set/unset 项目完成后,重新添加事件处理程序:
this.checkedListBox1.ItemCheck += this.checkedListBox1_ItemCheck;