模态窗体在辅助监视器上显示时会失去控制框功能



我遇到了与本文中描述的完全相同的问题:

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属性更改为FixedSingleFixed3DFixedDialog。此属性可以在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

最新更新