鼠标拖动窗体的疑问?
鼠标拖动窗体,我有几处 很不理解,问 同事,他也半懂不懂,说知道那样用就可以,会用就可以。。。郁闷
不理解的地方 我 用红色注释掉了,请高手 帮我 详细解释一下,谢谢!
bool isFlag;
Point offPoint; //偏移坐标
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
isFlag = true; //状态
offPoint = new Point(-e.X, -e.Y);//这个很不理解,(e.X, e.Y)是鼠标点下时候的坐标,下面把他作为了 鼠标的移动偏移量,前面还加个负号, 也不理解 }
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (isFlag)
{
//移动窗体
Point p = new Point(e.X, e.Y);//移动时鼠标的坐标
//转换成相对屏幕的坐标,不知道这 有什么用?
p = PointToScreen(p);
p.Offset(offPoint);//这里 最不懂,这样 坐标移动怎么会是鼠标和窗体的 移动呢? this.Location = p;
}
}
跪求高手详细指点,解释。。。
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
isFlag = false;
}