如何在表单的左上角设置坐标系的起点
本文关键字:设置 坐标系 起点 左上角 表单 | 更新日期: 2023-09-27 17:56:32
如何在表单的左上角设置坐标系的起点?因为它在显示器的左上角设置起点而不是表单,但我需要在表单的左上角设置起点。
这是我尝试执行的代码:
int x, y;
string _x, _y;
private void GetCursor()
{
_x = MousePosition.X.ToString();
x = int.Parse(_x);
label2.Text = _x;
_y = MousePosition.Y.ToString();
y = int.Parse(_y);
label4.Text = _y;
}
private void MoveButton()
{
button1.Location = new Point(x,y);
}
private void timer1_Tick(object sender, EventArgs e)
{
GetCursor();
MoveButton();
}
谢谢。
First Add Class (Win32.cs)
public class Win32
{
[DllImport("User32.Dll")]
public static extern long SetCursorPos(int x, int y);
[DllImport("User32.Dll")]
public static extern bool ClientToScreen(IntPtr hWnd, ref POINT point);
[StructLayout(LayoutKind.Sequential)]
public struct POINT
{
public int x;
public int y;
}
}
然后调用它 From 事件:
Win32.POINT p = new Win32.POINT();
p.x = Convert.ToInt16(txtMouseX.Text);
p.y = Convert.ToInt16(txtMouseY.Text);
Win32.ClientToScreen(this.Handle, ref p);
Win32.SetCursorPos(p.x, p.y);
带有txtMouseX
和txtMouseY
是自定义参数。我认为这应该在 (0, 0)。
您可以使用
Control.PointToClient 方法
Point localPoint = myForm.PointToClient(Cursor.Position);
label2.Text = localPoint.X.ToString();
label4.Text = localPoint.Y.ToString();