通过鼠标的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.开的线程太多,CPU占用率太高,可否用线程池优化 2.退出程序时退出线程有没有必要等到线程的IsAlive为false再退出
- 如何把一张图切成大小相等的几张图片
- 如何编写单元测试的代码 ..对自己的程序进行测试呢???有谁知道啊.!
- SQL中的guid类型再vs中的问题。。
- 高分求助:自动的从磁带上还原文件的方法
- 求助:关于操作系统的问题
- 在System.Windows .Forms .Keys中,哪个一值是小数点健。(在线等。)
- 问2个简单问题
- 自定义类中用OLEDB访问数据库失败!高手请进,在线等待。
- 为什么我的vc#一设断点想调试程序就会死机!:(
- windows shell 右键菜单问题
- 大哥们替我看一下这种是种怎样的错误
x1,y1是鼠标在窗体中的坐标x3=Control.MousePosition.X,y3= Control.MousePosition.Y
------------
这是鼠标相对屏幕的坐标;x2=Location.X,y2= Location.Y
---------这是控件(窗体)的左上角相对于容器(屏幕)的左上角的坐标应该x1+x2=x3,但为什么不等,纳闷
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");
}
Point screenPos = control1.PointToScreen(new Point(e.X, e.Y)).好像也可以使用Cursor.Position来获得
我想你说的不相等应该是因为有些控件会有一点非客户区吧。Point screenPos = control1.PointToScreen(new Point(e.X, e.Y)).