【问题标题】:Catching Click/DoubleClick events in the control container?在控件容器中捕获 Click/DoubleClick 事件?
【发布时间】:2010-11-11 12:54:10
【问题描述】:

我们的项目中有一个由 SubSystems.com 制作的第 3 方控件,称为 TE Edit Control,也称为“Tern”,有点像文字处理器模拟器。我已经通过 SO 搜索了使用此控件的其他任何人,但它似乎不是很受欢迎。他们没有任何支持联系方式;他们向任何需要产品帮助的人收费。

无论如何,在他们控制的事件中发生了一些非常古怪的事情 - 特别是 MouseClick 和 MouseDoubleClick。如果文档中有图像,并且您双击图像,则不会触发任何事件。但是,如果您随后单击文档正文,突然触发控件的 DoubleClick 事件,而不是单击事件。看起来活动正在某个地方排队,并且在错误的时间醒来。

我无意浪费我的时间试图弄清楚为什么他们的控制行为如此怪异。但我需要一种解决方法来解决这种行为。有没有办法让鼠标点击这个控件被传递到包含控件,所以我至少可以尝试为我的事件使用更可靠的源?

任何其他关于如何可靠地捕捉点击/双击事件的建议将不胜感激!

【问题讨论】:

  • Hmya,大量的广告预算很少为体面的支持留下太多空间。从控件派生您自己的类并覆盖 WndProc() 是您拥有的唯一不错的选择。

标签: c# winforms events


【解决方案1】:

一种方法是添加应用程序级别的消息过滤器。

您可以通过使用Application.AddMessageFilter(...). 来执行此操作。调用的参数是实现IMessageFilter 的实例对象,IMessageFilter 是一个只有一个名为PreFilterMessage 的方法的接口。在将应用程序中的每个 Windows 消息分派到适当的目标之前,都会调用此方法。因此,您可以在鼠标消息发送到您的问题控件之前窥探它们。这样你就可以为所欲为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    相关资源
    最近更新 更多