将光标剪切到面板

时间:2018-03-27 17:55:55

标签: c# cursor cursor-position

有什么办法可以将光标移动到面板区域吗?我试图从面板获取坐标,并在用户第一次单击鼠标后,光标应移动到面板并保持剪切,直到第二次鼠标单击。谢谢你的回答。

1 个答案:

答案 0 :(得分:0)

我在这里做的假设很少:

  • 您使用的是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}");
        }
    }

这将在面板的左上角创建一个“禁止进入”区域,如果光标进入该区域,我们会将其发送回中心