0
当勾选的框未选中时,我想删除该项目。检查/取消选中的麻烦似乎在调用ItemCheck方法后发生。所以,当我删除一个项目,e.Index的混乱,所以它做检查/取消选中后,我删除的项目或抛出一个错误,如果它是最后一个。CheckedListBox操作ItemCheck删除项目?
我发现这个:Getting the ListView ItemCheck to stop!它有重置e.NewValue部分工作的提示,但它仍然会抛出一个错误,当我删除最后一项。
我之所以没有简单地使用其中一个鼠标事件,是因为我希望键盘导航仍然可能,以防万一。
这是我现在的代码。
private void checked_ItemCheck(object sender, ItemCheckEventArgs e)
{
if (e.NewValue == CheckState.Unchecked)
{
checked.Items.RemoveAt(e.Index);
e.NewValue = CheckState.Checked;
}
}
感谢您的帮助
这几乎是问题所在。你的想法是好的,但即使if语句阻止我的代码改变e.NewValue,似乎检查/取消选中的默认代码仍然执行并给出NullReferenceException。如果该代码可以停止,我会很好。会有一些方法来覆盖默认代码吗? –
@Simon猫 - 给我15或20分钟来尝试一些事情,如果我修正了这个问题,我会发布更新。 – Tim
@Simon猫 - 好吧,所以花了我一个小时,但我有一个解决方案,应该为你工作。 – Tim