在MouseUp事件中,可以得到当前鼠标的坐标 Point, 怎样得到这个Point所在的控件的句柄呢?

解决方案 »

  1.   

    IntPtr handle = (sender as Control).Handle
      

  2.   

    e.X, e.Y是坐标
    sender是控件
      

  3.   

    强啊!这都回答得出来。我要是鼠标在button1上按下,然后移动到button2上 UP,你得到的是button1的坐标。
    真是服了你了!
      

  4.   

    获取想要的控件坐标后,用API:
            [DllImport("user32.dll", EntryPoint = "WindowFromPoint")]
                public static extern IntPtr WindowFromPoint(
                int xPoint,
                int yPoint
                );
    获取当前坐标外的控件句柄就可以了
      

  5.   

    顺便问一下,5楼取得 IntPtr ,怎么通过它取得控件对象呢?
      

  6.   


    这个取到IntPrt 是系统用的... 你可以递归你自己的控件.比较 Handle值来获取控件..这个方法是可以获取到你程序以外的句并.
      

  7.   


    用API
            [DllImport("user32.dll", CharSet = CharSet.Auto)]
            static extern int GetClassName(
                IntPtr hWnd,
                StringBuilder lpClassName,
                int nMaxCount
                );
    就可以根据获取的intptr来找到对应的控件类型,再利用API: 
            [DllImport("User32.dll", EntryPoint = "SendMessage")]
            private static extern int SendMessage(
                IntPtr hWnd,
                int Msg,
                IntPtr wParam,
                StringBuilder lParam);
    还可以获取或者设置控件的文本信息