WinForm窗体的MouseDown事件和MouseMove事件的问题

松果工作室 2006-10-31 08:29:34
我在阅读“制作不规则窗体”的相关文章时,有以下两个问题弄不明白,请高手指点:
...
Private Point mouseOffSet;
private bool isMouseDown=false;
...
private void MainForm_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
mouseOffset = new Point(-e.X, -e.Y);
isMouseDown = true;
}
}

private void MainForm_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (isMouseDown)
{
Point mousePos = Control.MousePosition;
mousePos.Offset(mouseOffset.X, mouseOffset.Y);
this.Location = mousePos;
}
}

Q1:为什么要使用(-e.X, -e.Y),而不是直接用(e.X,e.Y)?
Q2:OffSet()方法是将鼠标平衡(x,y)个像素吗?
...全文
543 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
flowersea312 2006-10-31
  • 打赏
  • 举报
回复
明白了
lizhizhe2000 2006-10-31
  • 打赏
  • 举报
回复
老大都说了,准没错!
zhangzengping 2006-10-31
  • 打赏
  • 举报
回复
kkkkkkkkkkkkkkkkkkk!

我也是 不明白 为什么是 (-e)
Knight94 2006-10-31
  • 打赏
  • 举报
回复
to Q1:为什么要使用(-e.X, -e.Y),而不是直接用(e.X,e.Y)?

这是窗体左上角相对于当前鼠标的偏移量

to Q2:OffSet()方法是将鼠标平衡(x,y)个像素吗?

计算窗体在当前鼠标位置下的左上角位置。

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧