如果你有一个带CheckOnClick = False的CheckedListBox,那么当检查项目时,如果首先选择了项目,则不会触发ItemCheck事件...暂停...然后再次单击以检查该项目 . 但如果是快速双击而没有暂停,则会触发事件 .
这是正确的行为吗?无论点击速度如何,ItemCheck事件都应该触发,对吧?
我相信这是一个很容易复制的奇怪行为:
-
做一个新的winform
-
添加一个CheckedListBox并向其添加一些项目 . (保留默认选中,单击为false)
-
添加标签
-
订阅ItemCheck事件,SelectedIndexChanged使标签的文本在每个事件触发时发生变化 .
还有其他人遇到过这个问题吗?
EDIT 5/1/2015
问题是SelectedIndexChanged事件在ItemCheck事件之后直接触发 . 这意味着它会在每个ItemCheck之前触发,然后立即触发 . 标签不会显示更改,因为它发生得太快,但切换到MessageBox.Show()会验证它是否会在之后直接触发 .
2 回答
问题是SelectedIndexChanged事件在ItemCheck事件之后直接触发 . 这意味着它会在每个ItemCheck之前触发,然后立即触发 . 标签不会显示更改,因为它发生得太快,但切换到MessageBox.Show()会验证它是否会在之后直接触发 .
根据MSDN checkedlistbox.checkonclick( read the remarks section )检查单击属性控件是否在第一次单击或第二次单击时选中了列表框项 . 在你的情况下检查点击是flase它需要两次点击检查项目 firing the ItemCheck event .