CheckBoxCell的点击和RowEnter事件
口 行1
?行2
MultiRow第一列为CheckBoxCell,并且有RowEnter事件。
点击不同行的CheckBox时,只触发RowEnter事件,而没有选中那行的CheckBox,必须点两下CheckBox才行。
这是怎么回事? 回复 1楼zhbchwin的帖子
感谢对该问题的反馈。
根据你的描述,按照如下步骤测试,并未重现你的问题。
测试步骤:
1.Template上按照1楼所示摆放CheckBoxCell和TextBoxCell。
2.在运行时,鼠标直接点击CheckBoxCell的单元格。
结果:CheckboxCell的check状态会发生改变。
请提供重现该问题的必然步骤和Demo,我可以帮你看看问题出在哪里。 回复 2楼Alice的帖子
谢谢你及时回答。
我做的简单的Demo也可以,但那个开发Framework中不行。
刚才发现原因了。
因为点下CheckBox之后,在RowEnter里调了改变Me.Cursor的处理,导致了这个问题。
去掉鼠标样式改变的处理就没问题。
但是这两个怎么关联到一块去了。。。 回复 3楼zhbchwin的帖子
你好。
根据你的描述,你在RowEnter中设置的代码逻辑影响到了checkbox的点击。
请将您使用的RowEnter的代码发给我,我帮你看看是哪里出了问题。 RowEnter代码:
Application.DoEvents()
Me.Enabled = False
Me.Cursor = Cursor.WaitCursor
'xxx 自己的处理
Application.DoEvents()‘起因,去掉这句正常,加上就不正常
Me.Cursor = Cursor.Default
Me.Enabled = True Application.DoEvents 是一个功能强大但是副作用很多的方法。调用它会导致原本的同步操作变成了异步操作。
在这个Case中,MouseDown触发了RowEnter,在RowEnter中调用了DoEvents,导致消息队列中的MouseClick和MouseUp被处理,但是MouseDown这个时候还没处理完。
因为处理鼠标点击的时候内部状态还没有同步正确,结果就导致这次鼠标点击无法修改CheckBox的状态。 回复 6楼Carl的帖子
谢谢回答。
原来是这么回事啊。。
不懂.Net Framework,都不知道Application.DoEvents。。。 回复 7楼zhbchwin的帖子
谢谢@carl 版主的耐心回复。
@zhbchwin 如果有什么问题欢迎提出来讨论。如果没有问题,这个帖子会被关闭。 回复 8楼Alice的帖子
没问题了,麻烦关了吧 回复 9楼zhbchwin的帖子
好的,谢谢你的反馈。
页:
[1]