现在在一窗体上通过鼠标事件获得一个坐标:x1=e.X,y1=e.Y
通过location属性获得窗体左上角相对其容器的坐标:x2=Location.X,y2=Location.Y
现再获得鼠标屏幕的坐标:x3=Control.MousePosition.X,y3=Control.MousePosition.Y
为什么x1+x2不等于x3,y1+y2也不等于y3;
请详细解释一下

解决方案 »

  1.   

    原因:
    窗体本身有:"鼠标事件"
    窗体上的控件例如:Panel或PictureBox也有“鼠标事件”如果你的MouseMove是父窗体Form的,那鼠标的它的坐标就从Form 的左上角点:(0,0)算起.如果你的MouseMove是父窗体的子控件Panel的,那鼠标的它的坐标就从Panel的左上角点:(0,0)算起. 总之,鼠标的当前坐标不只是一个,要分是相对于谁来取坐标, 一般e.X是相对于当前控件算其
    坐标的.在
    http://blog.csdn.net/ChengKing/archive/2005/11/06/524162.aspx
    中的第三个软件也实现了显示坐标,你可以去看一下.