none
Winform中,如何在响应了触控事件之后,不再响应鼠标事件?

    问题

  • 如题,我继承了Panel控件,重写了WndProc方法,实现了触控事件,但是在触发触控事件之后,仍会触发一次鼠标事件,请问如何屏蔽因触控产生的鼠标事件?

    2016年10月30日 3:45

答案

  • Hi Leo Y. Cheng,

    我觉得你可以使用HOOK可以勾到鼠标的事件,但是不做任何操作,这样就不会再次除非事件.

    这是是使用HOOK的API,你可以参考一下

    https://msdn.microsoft.com/en-us/library/windows/desktop/ms644959(v=vs.85).aspx

    这边是使用HOOK的sample.希望对你有所帮助。

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2016年11月4日 6:10
    版主

全部回复

  • 试下下面的方法

    public class MyPanel:Panel

        {

            protected override void WndProc(ref Message m)

            {

                switch (m.Msg)

                {

                    case 0x0201://WM_LBUTTONDOWN

                        {

                            return;

                        }

                    case 0x0202://WM_LBUTTONUP

                        {

                            return;

                        }

                    case 0x0203://WM_LBUTTONDBLCLK

                        {

                            return;

                        }

                    case 0x0204://WM_RBUTTONDOWN

                        {

                            return;

                        }

                    case 0x0205://WM_RBUTTONUP

                        {

                            return;

                        }

                    case 0x0206://WM_RBUTTONDBLCLK

                        {

                            return;

                        }

                }

     

                base.WndProc(ref m);

            }       

    }


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2016年10月30日 9:40
  • 谢谢回答,可是你这样不是把所有的鼠标事件都屏蔽了吗?我想要的是,只屏蔽因触屏产生的鼠标事件。

    正常的触控事件发生时,会依次产生触控和鼠标事件,我想让他只产生触控事件,而在后面不产生鼠标事件。

    也就是说,有什么办法可以判断一个鼠标事件是因鼠标操作而发生的,还是因触控操作而发生的;

    或者有没有什么API可以配置为触控不产生鼠标事件

    2016年10月30日 16:45
  • Hi Leo Y. Cheng,

    我觉得你可以使用HOOK可以勾到鼠标的事件,但是不做任何操作,这样就不会再次除非事件.

    这是是使用HOOK的API,你可以参考一下

    https://msdn.microsoft.com/en-us/library/windows/desktop/ms644959(v=vs.85).aspx

    这边是使用HOOK的sample.希望对你有所帮助。

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2016年11月4日 6:10
    版主