我遇到了与本文中描述的完全相同的问题:
http://social.msdn.microsoft.com/Forums/en/winforms/thread/bb67bf2d-4f6b-49a1-a107-18b11520bf8e
任何人都可以提供一些想法吗?多谢!
从上面的链接复制:
如果我使用
ShowDialog
将表单显示为模态,它会显示在我的主显示器上,并且在那里表现良好(最大化、最小化等......如果我在第二台或第三台显示器上移动表单,然后最大化 它,上面的整个栏停止工作:从左(系统菜单(到 右(恢复或最小化或关闭(,包括中间(双精度 单击栏不恢复(。
在某些情况下,当我经过 表单栏。左键单击和移动确实会调整表单大小!
正如他们在上述链接中的 msdn 站点上观察到的那样,如果第二个监视器配置为主监视器的左侧,则不会发生这种情况,但当它位于右侧时则不会发生这种情况。
这发生在 VS2010 和 VS2012 中,包括 C# 和 VB.NET。
1( 创建 Windows 窗体应用程序
2(向表单添加按钮
3( 对于按钮代码的按钮单击处理程序,如下所示:
private void button1_Click(Object sender, EventArgs e( { 表单 f = 新表单((; f.ShowDialog((; }
4( 运行应用程序,单击按钮。 将第二个窗体拖动到另一个监视器,然后最大化。
5(所有标题栏按钮:最小化,恢复/最大化,关闭现在都被禁用,尽管您可以 通过右键单击上下文菜单还原。 在主显示器上最大化不会执行此操作。
我在左侧的第二个屏幕上遇到了同样的问题,直到我将Form.FormBorderStyle
属性更改为FixedSingle
或Fixed3D
或FixedDialog
。此属性可以在Form_SizeChanged
事件处理程序中更改,如下所示:
Private Sub Form1_SizeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.SizeChanged
If Me.WindowState = FormWindowState.Maximized Then
Me.FormBorderStyle = Windows.Forms.FormBorderStyle.Fixed3D
else
Me.FormBorderStyle = Windows.Forms.FormBorderStyle.Sizable
End if