CheckedListBox ItemCheck事件仅在快速双击时触发?

时间:2015-04-30 20:54:48

标签: c# winforms events checkedlistbox eventhandler

如果你有一个带CheckOnClick = False的CheckedListBox,那么当检查项目时,如果首先选择了项目,则不会触发ItemCheck事件...暂停...然后再次单击以检查该项目。但如果是快速双击而没有暂停,则会触发事件。

这是正确的行为吗?无论点击速度如何,都应触发ItemCheck事件,对吧?

我相信这是一种很容易复制的奇怪行为:

  1. 制作新的winform
  2. 添加CheckedListBox并向其添加一些项目。 (保持默认检查单击为false)
  3. 添加标签
  4. 订阅ItemCheck事件,SelectedIndexChanged在每个事件触发时更改标签的文本。
  5. 还有其他人遇到过这个问题吗?

    2015年5月1日编辑

    问题是在ItemCheck事件之后直接触发SelectedIndexChanged事件。这意味着它会在每个ItemCheck之前触发,然后立即触发。标签不会显示更改,因为它发生得太快,但切换到MessageBox.Show()会验证它是否会在之后直接触发。

2 个答案:

答案 0 :(得分:1)

问题是在ItemCheck事件之后直接触发SelectedIndexChanged事件。这意味着它会在每个ItemCheck之前触发,然后立即触发。标签不会显示更改,因为它发生得太快,但切换到MessageBox.Show()会验证它是否会在之后直接触发。

答案 1 :(得分:0)

根据MSDN checkedlistbox.checkonclick阅读备注部分)检查点击属性控件是否在第一次点击或第二次点击时选中了列表框项。在你的情况下,检查点击是flase它需要两次点击检查项目,因此解雇ItemCheck事件