将光标剪切到面板
Clipping cursor to a panel
有什么方法可以将光标移动仅剪切到面板区域吗?我正在尝试从面板获取坐标,在用户第一次单击鼠标后,光标应移动到面板并保持在那里,直到第二次单击鼠标。感谢您的回答。
我在这里做的假设很少:
- 您正在使用 windows 表单
- 剪切光标意味着移动光标
这是我将光标从一个面板移动到另一个面板的示例代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void panel1_Click(object sender, EventArgs e)
{
Cursor.Position = CenterPoint(panel2);
}
private void panel2_Click(object sender, EventArgs e)
{
Cursor.Position = CenterPoint(panel1);
}
private Point CenterPoint(Control control)
{
return new Point(
Left + control.Left + control.Width / 2,
Top + control.Top + control.Height / 2);
}
}
您可以在 MouseMove 事件上遵循类似的逻辑来限制移动
private void panel1_MouseMove(object sender, MouseEventArgs e)
{
if (e.X - panel1.Left < 20 && e.Y - panel1.Top < 20)
{
Cursor.Position = CenterPoint(panel1);
Console.WriteLine($"{e.X} {e.Y}");
}
}
这将在面板的左上角创建一个 "No-Go" 区域,如果光标进入该区域,我们会将其送回中心
有什么方法可以将光标移动仅剪切到面板区域吗?我正在尝试从面板获取坐标,在用户第一次单击鼠标后,光标应移动到面板并保持在那里,直到第二次单击鼠标。感谢您的回答。
我在这里做的假设很少:
- 您正在使用 windows 表单
- 剪切光标意味着移动光标
这是我将光标从一个面板移动到另一个面板的示例代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void panel1_Click(object sender, EventArgs e)
{
Cursor.Position = CenterPoint(panel2);
}
private void panel2_Click(object sender, EventArgs e)
{
Cursor.Position = CenterPoint(panel1);
}
private Point CenterPoint(Control control)
{
return new Point(
Left + control.Left + control.Width / 2,
Top + control.Top + control.Height / 2);
}
}
您可以在 MouseMove 事件上遵循类似的逻辑来限制移动
private void panel1_MouseMove(object sender, MouseEventArgs e)
{
if (e.X - panel1.Left < 20 && e.Y - panel1.Top < 20)
{
Cursor.Position = CenterPoint(panel1);
Console.WriteLine($"{e.X} {e.Y}");
}
}
这将在面板的左上角创建一个 "No-Go" 区域,如果光标进入该区域,我们会将其送回中心