- 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/
我编写了以下类来创建使用自然排序算法的 CheckedListbox。被覆盖的 Sort()然而,方法并没有被解雇。 (该方法中的代码来自 MSDN 示例,关于如何在常规列表框上实现您自己的排序算法。
我在创建 CheckedListBox 的“二级”时遇到了一些问题。 示例: 这是我的 CheckedListBox: 代码: checkedListBox_materiałyDoRozliczen
我有: ListenCheckedListBox.SetItemCheckState(0, CheckState.Unchecked); 这个赋值会触发 ListBox 的 ItemCheck 事件吗
我有一个包含两个元素的表单:一个CheckedListBox 和一个CheckBox。 CheckBox 称为SelectAllCheckBox,用于选中/取消选中CheckedListBox 中的所
我需要改变我的 CheckedListBox 中项目的颜色,但“alternatingColors”不是 CheckedListBox 的属性。 如何让项目的颜色交替? 最佳答案 默认情况下,OnDr
我有一个使用此代码获取项目的 CheckedListBox。 public static void GetDisplayValueList(object clk, string[] kv, strin
我想在一个应用程序中使用 CheckedListBox,其中 ListBox 中的每个项目都是我硬盘上一个文件夹的名称,并且为了在这些文件夹中的每个文件夹中读取和写入文本文件,我想确保在 Checke
我在一个表单上有多个 checkedListBox。对于每个 checkedListBox 我都有一个按钮来“选择所有”项目: private void btnSelectAll1_Click(obj
我需要覆盖基本的 CheckedListBox 行为。 可以在不附加任何代码的情况下选中和取消选中 CheckedListBox。 我需要禁用此行为,以便我可以实现自定义代码。 有什么想法吗? 谢谢。
在 .NET 领域,有非常有用的 System.Windows.Forms.CheckedListBox类。 Windows Common Controls 中的等价物是什么? (如果有的话) 最佳答
在我的 CheckedListBox 应用程序中,我只想允许检查一个项目。 我已经设置了这些属性 checkOnClick = true; SelectionMode = One; 任何建议将不胜感激
当用户的鼠标悬停在 CheckedListBox 中的项目上时,是否有一种直接的方法来设置在工具提示中显示额外的文本? 我期望能够在代码中做的是: uiChkLstTables.DisplayOnHo
我有一个名为 Subjects 的集合,其属性为字符串中的名称和整数中的 SubjectCode。我将它传递给一个选中的列表框。按下按钮,我想获取用户检查的所有项目的集合,将其转换为集合主题。 请任何
我在 Windows 窗体中有一个 CheckedListBox 控件。 我想知道向谁添加多列。MultiColumn 属性设置为 true。我只想知道添加 2 列的编码。 我的代码是 while (
在 .NET Framework 中,是否可以将 CheckedListBox 中的某些项目设置为“不可选中”?我不想让用户再次检查相同的项目并将它们添加到另一个现有列表中。 我希望我是清楚的。提前致
我为 Windows 窗体应用程序创建了一个用户控件。它只有一个带有四个单元格的 TableLayoutPanel。 Cell[0,0] 和 cell[0,1] 有标签。 Cell[1,0] 有一个
我想根据传递给表单构造函数的项目填充 CheckedListBox(在本例中,列表 )。 我的框架代码是: foreach (int platypus in listPlatypi) { us
我有一个像这样的CheckedListBox: :'''''''''''''''/\ : [ ] item1 || : [x] item2 || : [ ] item3 ##
是否可以像在复选框中一样将 .Checked== 应用于 checkedlistbox? 如果以复选框的方式来做它是行不通的 if(checkedListBox1.Items[2].Checked==
我有一个绑定(bind)到 DataTable 的 CheckedListBox。现在我需要以编程方式检查一些项目,但我发现 SetItemChecked(...) 方法只接受项目索引。 有没有一种实
我是一名优秀的程序员,十分优秀!