通过鼠标的MouseDown的事件捕获到一个坐标:x1=e.X,y1=e.Y
再获得窗体相对于桌面的坐标:x2=Location.X,y2= Location.Y
现在取得鼠标的屏幕坐标x3=Control.MousePosition.X,y3= Control.MousePosition.Y
但现在:x1+x2不等于x3   y1+y2不等于y3,为什么不相等?谁能解释一下?

解决方案 »

  1.   

    呵呵,我刚也碰到过这样的问题,
    x1,y1是鼠标在窗体中的坐标x3=Control.MousePosition.X,y3= Control.MousePosition.Y
    ------------
    这是鼠标相对屏幕的坐标;x2=Location.X,y2= Location.Y
    ---------这是控件(窗体)的左上角相对于容器(屏幕)的左上角的坐标应该x1+x2=x3,但为什么不等,纳闷
      

  2.   

    我是这样捕捉鼠标坐标的:
    private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    MessageBox.Show(e.X+"  "+e.Y," e");
    MessageBox.Show(Location.X+"  "+Location.Y,"location");
    MessageBox.Show(Control.MousePosition.X+"  "+Control.MousePosition.Y," screen");
    }
      

  3.   

    要想获得鼠标的屏幕坐标,可以使用其所在控件实例,比如control1,
    Point screenPos = control1.PointToScreen(new Point(e.X, e.Y)).好像也可以使用Cursor.Position来获得
      

  4.   

    littlefellow() ( ) 信誉:100  2006-01-08 22:28:00  得分: 0  
     
     
       我想你说的不相等应该是因为有些控件会有一点非客户区吧。Point screenPos = control1.PointToScreen(new Point(e.X, e.Y)).