【发布时间】:2021-10-21 08:49:45
【问题描述】:
我正在尝试编写一些代码来“拖动”我的 Winform 应用程序中的某些内容。代码如下:
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
this.textBox1.AppendText($"{DateTime.Now}\r\n");
}
}
但是当我双击标题栏最大化窗口时,MouseMove 事件被触发并且e.Button 是MouseButtons.Left 所以我可以看到一些文本出现在文本框中。但是,当使用Maximize window 按钮(在X 按钮旁边)时不会发生这种情况。
发生了什么事?
我的环境: Windows 10 企业版、Visual Studio Enterprise 2019 v16.5.4、.net framework 4.6.1
【问题讨论】:
-
大多数鼠标动作都是在鼠标抬起事件上触发的。例如,最大化按钮单击。双击标题栏有点奇怪的是,操作系统在第二个鼠标 down 事件而不是 mouse-up 事件上调整大小。你会得到一个鼠标移动,窗口位置改变了,所以相对鼠标位置改变了。你会看到按钮向下。使用 Control.DoDragDrop() 是避免意外的最佳方式。
-
@HansPassant 谢谢。但
Control.DoDragDrop()似乎用于在不同应用程序之间的不同窗口事件之间拖动对象(例如文件)。这对我来说有点“重”。
标签: winforms