【问题标题】:How do I prevent the next checkbox in a CheckedListBox control from being unchecked when the previous checkbox is removed?当上一个复选框被删除时,如何防止 CheckedListBox 控件中的下一个复选框被取消选中?
【发布时间】:2012-06-27 15:21:57
【问题描述】:

我正在开发一个 .NET Windows 窗体应用程序。我有一个 CheckedListBox 控件的事件处理程序,如果它未选中,它应该从列表中删除一个复选框。我让那部分工作了,但问题是下一个应该被选中的复选框在我这样做时会自动变为未选中。

我已尝试“手动”从 CheckedListBox 中删除所有元素并再次添加它们,确保它们已被选中,但下一个复选框仍未选中。

这很令人沮丧。

我的代码有问题还是这是一个错误?

    private void checkedListBox_ItemCheck(object sender, ItemCheckEventArgs e)
    {
        if (e.CurrentValue == CheckState.Checked)
        {
            checkedListBox.Items.RemoveAt(e.Index);
        }
    }

【问题讨论】:

  • 那么所有项目都开始检查了吗?
  • 没有。这些项目代表选定的“过滤器”。对于每个过滤器,一个选中的复选框被添加到 checkedListBox 控件中。当用户想要删除过滤器时,他只需取消选中复选框,它就会从 checkedListBox 控件中消失。但正如我所提到的,下一个复选框未选中。试试看:)

标签: .net winforms checkbox checkedlistbox


【解决方案1】:

我找到了解决问题的方法。这有点小技巧,但它确实有效。

我刚刚提供了一个 MouseUp 事件处理程序,并在其中循环检查了checkedListBox的项目,将未选中的项目设置为选中。

【讨论】:

    猜你喜欢
    • 2015-12-20
    • 2015-01-20
    • 2015-06-19
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-15
    • 2021-12-23
    相关资源
    最近更新 更多