【发布时间】:2013-01-05 12:11:32
【问题描述】:
我有以下情况(简化):在 WinForms 表单中,我有一个 GroupBox。里面有一些 UserControl_A 对象,每个对象都包含几个 UserControl_B 对象(当然都是从 UserControl 派生的)。
我有一个用于 GroupBox 的 ContextMenuStrip,每次右键单击都可以正常工作,无论是在任何 UserControl_A/B 对象上还是在 GroupBox 背景本身上。
但我还需要处理左键单击。处理 GroupBox 的 Click 和 MouseClick 事件是有效的,但仅在背景上。只要指针位于 UserControl_A 或 UserControl_B 对象内,就不会发生任何事情。我已经尝试处理两个 UserControl 类的 Click 和 MouseClick 事件,但根本不会调用处理程序。
任何提示这里出了什么问题?或者如何调试这样的事件处理问题?
非常感谢您, 斯蒂芬
补充:我现在做了一个全新的、精简的项目来探索这种情况,一切正常。那么如何才能检测出我的实际项目出了什么问题呢?
【问题讨论】:
-
嗨 Stefan,也许您可以向我们展示一些 onClick/onMouseDown 的代码...-您的 UserControls 方法。
-
没有。我只向事件添加了 UserControl_A_Click 等代表。在委托中,目前仅打印一条调试消息。 ——你看到我的补充了吗?似乎这不是机制本身,而是我的项目内部的某些东西是错误的。我已经在代码中搜索了所有“点击”字符串……没什么可疑的。
-
好吧,这是我自己的错。很抱歉浪费您的时间。原因很简单:在我的 UserControls 中还有其他控件,例如停靠的 TableLayoutPanel 和一些标签。 UserControl 类中的鼠标事件处理程序永远不会收到任何事件,因为它们会传播到内部控件中。在那里挂钩委托函数是可行的...... :-) 也许这可以帮助遇到类似问题的人。 问题已回答。我还不能在这里回答我自己的问题,我会尽快解决这个问题
标签: c# winforms event-handling mouseevent