WinForm鼠标点击窗体拖动事件

winform 中的坐标:

1.  屏幕坐标系,以显示屏左上角为(0,0)点的坐标,横坐标从左到右增加,纵坐标从上到下增加。

2. 窗体坐标系,以winform窗体左上角为(0,0)点,横坐标从左到右增加,纵坐标从上到下增加。

注意:mouse函数中,如果鼠标被移动,dX和dy保留移动的信息;给出的信息是绝对或相对整数值;正值表示鼠标向右(或下)移动;负值表示鼠标向左(或上)移动。

WinForm鼠标点击窗体拖动事件:

  private void Form_login_MouseDown(object sender, MouseEventArgs e){
            if (e.Button == MouseButtons.Left)
            {
                mouseoff = new Point(e.X, e.Y);
                leftFlag = true;

            }
        }
        private void Form_login_MouseMove(object sender, MouseEventArgs e)
        {
            if (leftFlag)
            {
                Point mouseSet = Control.MousePosition;
                mouseSet.Offset(-mouseoff.X, -mouseoff.Y);//这里注意下-的用意,offset
                Location = mouseSet;
            }}

        private void Form_login_MouseUp(object sender, MouseEventArgs e)
        {
            if (leftFlag)
            {
                leftFlag = false;}
        }

注意事项:Offset 是将此矩形的位置调整指定的量,但是给的是相对绝对值的,所以是整数,这时候鼠标移动就会再原来的坐标基础上追加,导致窗体的坐标与鼠标的坐标不一致,又因为屏幕坐标是左上角为00,向下和向右都是追加的不是递减的,所以需要用负数减去偏移量,这时候就能保障窗体是紧跟着鼠标的


猜你喜欢

转载自blog.csdn.net/u013667895/article/details/78891604