gpt4 book ai didi

c# - 为什么 MouseEventArgs 在等式中使用时不起作用

转载 作者:行者123 更新时间:2023-11-30 17:07:19 24 4
gpt4 key购买 nike

Windows 窗体应用程序:

这让我困惑了好几个小时。我正在尝试做的是,当我按住标签时,它会移动表格。

    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));

}

是我正在使用的(当然还有公共(public) bool KeepMoving。)

如果我删除 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;
}
}

关于c# - 为什么 MouseEventArgs 在等式中使用时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14649424/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com