【问题标题】:Why ItemCheck Event Of CheckList Box Always One Behind?为什么CheckList Box的ItemCheck事件总是落后一个?
【发布时间】:2012-04-25 13:32:52
【问题描述】:

我正在开发一个带有清单框的 winform。我想将检查列表框的选中项存储在数组列表中。我的检查列表框中有 5 项,我想处理 itemcheck 事件。

如果我检查一个项目 itemcheck 事件触发但项目计数再次保持为 0 如果我在事件处理程序中检查 2 个项目,如果我下次重复此过程,项目计数变为 1 计数变为 2(但现在我检查了 3 个项目) .

请帮助我下面的代码是我正在使用的代码 sn-p :

 private void CLB_Course_ItemCheck(object sender, ItemCheckEventArgs e)
        {            
            List<string> items = new List<string>();            
            foreach (string ItemsChecked in CLB_Course.CheckedItems)
            {
                items.Add(ItemsChecked);
            }
        }

【问题讨论】:

标签: c# winforms


【解决方案1】:

正如 Mitja 所链接的问题中所解释的,CheckedListBox 并不是那么好。

如果您想要检查项目的列表,您可以考虑使用 ListView 代替,它有一个 CheckBoxes 属性,您可以将其设置为 true 以获得与 @987654325 中相同的行为@,但添加了 ItemChecked 的功能,因为该事件实际上存在于 ListView 控件中。

在您的事件侦听器中,您可以使用 e.Item 属性(来自 ItemCheckedEventArgs)获取选中的项目,或者使用 ListView 的 CheckedIndicesCheckedItems 属性获取所有选中的项目。

【讨论】:

    【解决方案2】:

    发生这种情况是因为当项目即将更改其检查状态时引发该事件。直到事件发生后该值才会更新

    【讨论】:

      猜你喜欢
      • 2014-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多