代码之家  ›  专栏  ›  技术社区  ›  Matej

将光标剪切到面板

  •  0
  • Matej  · 技术社区  · 6 年前

    是否有任何方法可以将光标移动仅剪切到面板区域?我试图从一个面板中获取坐标,在用户第一次单击鼠标后,光标应该移动到面板上,并保持在那里直到第二次单击鼠标。感谢您的回答。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Helder Sepulveda    6 年前

    我在这里做的假设很少:

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

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