CheckedListBox ItemCheck 事件仅在快速双击时触发?
CheckedListBox ItemCheck event only fires on fast double click?
如果您有一个 CheckOnClick = False 的 CheckedListBox,则在选中该项目时不会触发 ItemCheck 事件,如果它是第一次选中...暂停...然后再次单击以选中该项目。但如果是快速双击且没有停顿,该事件就会触发。
这是正确的行为吗?无论点击速度如何,ItemCheck 事件都应该触发,对吗?
我相信这是很容易复制的 st运行ge 行为:
- 制作一个新的winform
- 添加一个 CheckedListBox 并向其中添加一些项目。 (保留点击时的默认检查为 false)
- 添加标签
- 订阅 ItemCheck 事件和 SelectedIndexChanged 使标签的文本在每个事件触发时发生变化。
还有其他人 运行 关注这个问题吗?
编辑 5/1/2015
问题是 SelectedIndexChanged 事件在 ItemCheck 事件之后被直接触发。这意味着它在每次 ItemCheck 之前和之后立即被触发。标签不会显示更改,因为它发生得太快了,但是切换到 MessageBox.Show() 可以验证它是否在之后直接被触发。
根据 MSDN checkedlistbox.checkonclick(阅读备注部分)单击时检查 属性 控制是否在第一次单击或在第二次点击。如果您的点击检查是 flase,则需要两次点击才能检查该项目,因此 触发 ItemCheck 事件。
问题是 SelectedIndexChanged 事件在 ItemCheck 事件之后被直接触发。这意味着它在每次 ItemCheck 之前和之后立即被触发。标签不会显示变化,因为它发生得太快了,但是切换到 MessageBox.Show() 验证它在之后直接被触发。
如果您有一个 CheckOnClick = False 的 CheckedListBox,则在选中该项目时不会触发 ItemCheck 事件,如果它是第一次选中...暂停...然后再次单击以选中该项目。但如果是快速双击且没有停顿,该事件就会触发。
这是正确的行为吗?无论点击速度如何,ItemCheck 事件都应该触发,对吗?
我相信这是很容易复制的 st运行ge 行为:
- 制作一个新的winform
- 添加一个 CheckedListBox 并向其中添加一些项目。 (保留点击时的默认检查为 false)
- 添加标签
- 订阅 ItemCheck 事件和 SelectedIndexChanged 使标签的文本在每个事件触发时发生变化。
还有其他人 运行 关注这个问题吗?
编辑 5/1/2015
问题是 SelectedIndexChanged 事件在 ItemCheck 事件之后被直接触发。这意味着它在每次 ItemCheck 之前和之后立即被触发。标签不会显示更改,因为它发生得太快了,但是切换到 MessageBox.Show() 可以验证它是否在之后直接被触发。
根据 MSDN checkedlistbox.checkonclick(阅读备注部分)单击时检查 属性 控制是否在第一次单击或在第二次点击。如果您的点击检查是 flase,则需要两次点击才能检查该项目,因此 触发 ItemCheck 事件。
问题是 SelectedIndexChanged 事件在 ItemCheck 事件之后被直接触发。这意味着它在每次 ItemCheck 之前和之后立即被触发。标签不会显示变化,因为它发生得太快了,但是切换到 MessageBox.Show() 验证它在之后直接被触发。