- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在我用 C# 编写的 Windows 窗体项目中,我尝试在选中最后一个项目后清除 CheckedListBox。
private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
if (checkedListBox1.CheckedItems.Count + 1 == checkedListBox1.Items.Count)
{
checkedListBox1.Items.Clear();
}
}
在此示例中,程序将在我检查最后一项后抛出 NullReferenceException。
有人可以解释为什么会发生这种情况以及我该如何处理吗?
提前致谢!
最佳答案
更改代码以在项目的检查状态更新后运行逻辑:
private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
checkedListBox1.BeginInvoke(new Action(() =>
{
if (checkedListBox1.CheckedItems.Count == checkedListBox1.Items.Count)
{
checkedListBox1.Items.Clear();
}
}));
}
根据documentations ,默认情况下,当 ItemCheck
事件引发时,直到 ItemCheck
事件发生后,项目的检查状态才会更新。这意味着它会在运行事件处理程序中的代码后尝试更新项目的检查状态。作为您的代码的结果,它会尝试在从项目集合中删除项目后更新项目检查状态,这就是发生异常的原因。您可以在堆栈跟踪中看到发生了什么,也在 source code 中。的控制。
在上面的代码中,我们使用 BeginInvoke
在检查状态更新后延迟运行代码。您可以在 this post 中阅读更多相关信息.
关于c# - 在 ItemCheck 事件后清除 CheckedListBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52244315/
与ListView有什么区别? ItemCheck和 ListView 。 ItemChecked .NET 中的事件? 最佳答案 当项目的选中状态即将更改时,会触发 ItemCheck 事件,允许您
我使用以下代码将 CheckedListBox 中选中的项目数限制为 1: private void checkedListBox1_ItemCheck(object sender,
我使用以下代码将 CheckedListBox 中选中的项目数限制为 1: private void checkedListBox1_ItemCheck(object sender,
我在 form2 (clbForm2) 中有一个检查列表框,我在其中明确地将其映射到项目检查事件。现在我需要从 form2 中取消选中 Form1 中控件的所有选中项。在取消选中项目时,它会触发项目检
当我选中或取消选中复选框列表中的复选框时,我试图“做某事”。我尝试使用 https://msdn.microsoft.com/en-us/library/system.windows.forms.ch
我在处理一些代码时遇到了很多麻烦,因为 ListView.ItemChecked每次将项目添加到 ListView 时都会调用事件。我能设法阻止这种情况的唯一方法是检查 ListView 是否在偶数发
当我在 ListView 上检查某个项目时,会发生“ItemCheck”事件,但该项目的检查值始终返回旧值! 知道如何解决这个问题吗? 最佳答案 当项目的检查状态即将更改时,ItemCheck 发生,
我有一个包含选项卡的 winform,包含一个用户控件,包含一个带有复选框的 ListView 。 private void lvwRoles_ItemCheck(object sender,
在我用 C# 编写的 Windows 窗体项目中,我尝试在选中最后一个项目后清除 CheckedListBox。 private void checkedListBox1_ItemCheck(obje
当不选中检查的盒子时,我想删除该项目。问题是检查/取消检查似乎发生在调用 ItemCheck 方法之后。因此,当我删除一个弄乱 e.Index 的项目时,它会在我删除的项目之后检查/取消选中该项目,或
我在 C# 窗口窗体应用程序中使用 CheckedListBox。 我想在一项选中或取消选中后执行某些操作,但 ItemCheck 事件在该项选中/取消选中之前运行。我该怎么做? 最佳答案 Check
ListView 控件有一个ItemCheck 事件,它在 项目更改之前触发,还有一个ItemChecked 事件在之后触发 项目发生变化。参见 this SO question了解更多详情。 Che
有谁知道取消 CheckedListBox 上的 ItemCheck 事件的可靠方法?我处于 ItemCheck 事件基本上应该丢弃表单上的更改的情况,但是,如果该人决定取消丢弃,我希望 ItemCh
我的 Winforms 应用程序中有一个 ListBox,我需要处理 ItemChecked,因为每次用户点击一个项目时我需要一些东西。问题是我还需要在表单的其他一些事件中更改 Checked 属性。
我是一名优秀的程序员,十分优秀!