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,向下和向右都是追加的不是递减的,所以需要用负数减去偏移量,这时候就能保障窗体是紧跟着鼠标的