C# 调整大小时单击鼠标右键移动表单
如果右键按下,则在调整窗体大小时,我尝试移动窗体,而不是调整窗体大小 调整事件大小:C# 调整大小时单击鼠标右键移动表单,c#,winforms,C#,Winforms,如果右键按下,则在调整窗体大小时,我尝试移动窗体,而不是调整窗体大小 调整事件大小: if (rightMouseDown) { this.SetDesktopLocation(MousePosition.X - this.Width, MousePosition.Y - this.Height); this.MaximumSize = new System.Drawing.Size(this.Width, this.Height); this.MinimumSize =
if (rightMouseDown)
{
this.SetDesktopLocation(MousePosition.X - this.Width, MousePosition.Y - this.Height);
this.MaximumSize = new System.Drawing.Size(this.Width, this.Height);
this.MinimumSize = new System.Drawing.Size(this.Width, this.Height);
}
全局鼠标事件:
bool rightMouseDown;
private void HoldMouse(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right && e.Clicks != 1)
{
rightMouseDown = true;
}
else if (e.Button == MouseButtons.Right)
{
rightMouseDown = false;
this.MaximumSize = new System.Drawing.Size(0, 0);
this.MinimumSize = new System.Drawing.Size(100, 100);
}
}
当我点击右键时,它会冻结,因为最大大小是恒定的,因此我无法调整窗体的大小。
e、 取消将是可怕的,如果它将工作,但我不能使用它
我能够用全局事件捕获鼠标事件,表单事件并不奇怪
我让它工作了,但只有当窗口的宽度最小,并且在鼠标右键向上移动后,窗口变为原始宽度时,它才会工作。
这是由于将其设置为默认大小。如何在不将窗口设置为MaximumSize 0,0的情况下将其保持在更改后的大小?首先,我建议您在右键按下时不要移动表单,因为这是非常不标准的,因此可能会被任何试图使用您的应用程序的人视为非常特殊。更具体地说,没有人会尝试使用鼠标右键移动或调整窗体大小,因此:
因此,一旦您检测到鼠标右键点击工作,那么您需要设置鼠标捕获。(查找它,搜索“SetCapture”。)这就是保证您可以不断接收鼠标移动事件,以及最后一个鼠标向上移动事件的原因,即使鼠标在拖动窗体时已移动到窗体外部。首先,我建议您不要在右键按下时移动窗体,因为这是非常不标准的,因此可能会被任何试图使用你的应用程序的人认为是非常特殊的。更具体地说,没有人会尝试使用鼠标右键移动或调整窗体大小,因此:
因此,一旦您检测到鼠标右键点击工作,那么您需要设置鼠标捕获。(查找它,搜索“SetCapture”。)这就是保证您可以不断接收鼠标移动事件,以及最后一个鼠标向上移动事件的原因,即使您拖动鼠标时鼠标已移动到窗体外部。我使用WinForms的MetroFramework。也许这就是我无法捕捉鼠标右键事件的原因。但是我应该找到另一种方法,我就快到了。”在我调整大小时移动表单而不是调整它的大小“真的吗?@MikeNakis是的,真的,只有当你按住鼠标右键时,它才会这样做,这样用户就不必去上栏用左键单击它,然后返回右下角。我不是要求用户反馈。我使用WinForms的MetroFramework。也许这就是我无法捕捉鼠标右键事件的原因。但是我应该找到另一种方法,我就快到了。”在我调整大小时,移动表单而不是调整它的大小“真的吗?@MikeNakis是的,真的,只有当你按住鼠标右键时,它才会这样做,这样用户就不必去上栏用左键单击它,然后返回底部