C#学习教程:捕捉鼠标在Form任意位置的点击(不带IMessageFilter)我试过KeyPreview=true;但它没有帮助(尽管它适用于KeyDown-键盘点击)。我正在寻找类似KeyPreview的东西,但用于鼠标事件。如果有更简单的方法,我宁愿不使用IMessageFilter和处理WinAPI消息。替代方案(此外,IMessageFilter设置为应用程序范围。我只想要表单范围。)并迭代所有子控件,订阅每个子控件,有其自身的缺点。您仍然可以使用MessageFilter并仅过滤ActiveForm:privateclassMouseDownFilter:IMessageFilter{publiceventEventHandlerFormClicked;私人intWM_LBUTTONDOWN=0x201;私有表格form=null;[DllImport("user32.dll")]publicstaticexternbooltrIsChild(hWndParent,IntPtrhWnd);publicMouseDownFilter(Formf){form=f;}publicboolPreFilterMessage(refMessagem){if(m.Msg==WM_LBUTTONDOWN){if(Form.ActiveForm!=null&&Form.ActiveForm.Equals(form)){OnFormClicked();}}返回假;}protectedvoidOnFormClicked(){if(FormClicked!=null){FormClicked(form,EventArgs.Empty);然后在你的表单中,追加Go到它:以上是C#学习教程:在Form任意位置捕获鼠标点击(不使用IMessageFilter)共享的所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——publicForm1(){InitializeComponent();MouseDownFiltermouseFilter=newMouseDownFilter(this);mouseFilter.FormClicked+=mouseFilter_FormClicked;Application.AddMessageFilter(mouseFilter);}voidmouseFilter_FormClicked(对象sender,EventArgse){//dosomething...}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
