【发布时间】:2013-03-11 02:24:23
【问题描述】:
我有一个小表单,上面有一些复选框,CheckChanged 事件的每个复选框都有一个消息处理程序。由于某些复选框依赖于其他复选框,如果一个复选框的选中状态发生更改,它会更改任何依赖复选框的选中状态。我发现这会导致在其他复选框上引发事件,但我的问题是每个事件都有一个函数调用,只有当事件来自用户实际单击复选框时才应调用该函数调用。我想知道如何判断(可能来自发件人或EventArgs)CheckChanged 事件是否是由鼠标单击引起的。
悬崖:
- 多个复选框接收
CheckChanged事件 - 需要确定是否通过鼠标单击引发了事件
【问题讨论】:
-
当他们使用制表符和空格键进行导航和选择时会怎样?在尝试破坏输入法之前,我会理清你的逻辑。
-
我可能会断开更改的事件处理程序,然后重新连接它们。
-
您能否告诉我们您为什么想知道他们选择使用的是鼠标吗?它可能对我们有帮助。在我能想到的几乎所有情况下,它都没有任何区别......
-
@Penfold 这是一个这样的细节实际上非常清楚的问题 - 因为,副作用逻辑。
-
感谢您的快速回复。 @Grant,相同的规则将适用于键盘按下(我希望触发事件),因此可以将问题改写为“如何判断事件是否是由用户输入引起的,而不是作为侧面-节目效果”
标签: c# winforms checkbox event-handling