[英]Windows Forms: prevent ActiveX from getting mouse events
在Win7的C#Windows窗体应用程序中,我们托管一个ActiveX控件。 到现在为止还挺好。
实际上,ActiveX具有太多的功能。 关闭我们不需要的功能不是很可定制。
如果我们只是阻止它接收鼠标事件,那就太好了。
理想的做法是将事件视为好像ActiveX不存在一样,也就是说,鼠标单击将直接到达基础(或包含)控件。
但是,如果我们只是阻止ActiveX获得事件,那对我们来说是可以的。
先前问题的一些答案提到了protected override void WndProc(ref Message m)
,例如c#-将鼠标事件传递给父控件-代码日志
实现IMessageFilters的其他提及,例如:
我已经相当广泛地尝试了override WndProc
和IMessageFilter
方式,过滤(选择加入和选择退出)许多事件。 在某些情况下,我可以阻止事件到达本机C#控件,但是ActiveX仍然占有份额。
过滤太多,阻止控件和ActiveX绘制,甚至阻止应用程序正确绘制,或者导致退出时崩溃。 可以通过仔细选择启用或退出选项来避免此情况。
从C#/。NET是否有另一种方法来承载ActiveX控件,同时防止它获得鼠标事件? 也许在应用程序启动时?
创建完后,尝试在ActiveX控件的最上层hwnd上执行EnableWindow(hand,FALSE)。 请参见使用窗口句柄使用c#禁用鼠标单击,以及如何在c#中执行此操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.