为什么在公式中使用时 MouseEventArgs 不起作用
本文关键字:MouseEventArgs 不起作用 为什么 | 更新日期: 2023-09-27 17:57:05
Windows Forms Application:
这已经让我困惑了几个小时。我试图做的是当我按住标签时,它会移动表单。
private void label1_MouseUp(object sender, MouseEventArgs e)
{
KeepMoving = false;
}
private void label1_MouseDown(object sender, MouseEventArgs e)
{
KeepMoving = true;
}
private void label1_MouseMove(object sender, MouseEventArgs e)
{
if (KeepMoving == true)
this.Location = new Point(MousePosition.X - (e.X + SystemInformation.FrameBorderSize.Width + label1.Left), MousePosition.Y - (e.Y + SystemInformation.CaptionHeight + label1.Top));
}
是我正在使用的(当然是使用公共布尔值 KeepMove。
如果我删除 e.X 和 e.Y,一切正常,但它是相对于标签左上角的位置,但是我希望标签本身上的位置。
当我使用消息框向我显示标签上的 e.X 和 e.Y 坐标时,数字是正确的,显示我在标签上单击的位置。当我使用上面代码中的点时,无论我单击标签上的哪个位置,数字都不会改变,当我尝试移动它时,它会上升到 30k+ 范围。
为什么 MouseEventArgs 在我的方程中不起作用?对不起,如果我描述得不好,我尽力了。
跟踪标签左上角的初始偏移量,并相应地调整表单的位置。
public bool KeepMoving = false;
private Point offset;
private void label1_MouseDown(object sender, MouseEventArgs e)
{
KeepMoving = true;
offset = new Point(e.X, e.Y);
}
private void label1_MouseUp(object sender, MouseEventArgs e)
{
KeepMoving = false;
}
private void label1_MouseMove(object sender, MouseEventArgs e)
{
if (KeepMoving)
{
Left += e.X - offset.X;
Top += e.Y - offset.Y;
}
}