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

时间:2012-05-21 16:07:49

标签: c# modal-dialog

我遇到与本文所述完全相同的问题:

http://social.msdn.microsoft.com/Forums/en/winforms/thread/bb67bf2d-4f6b-49a1-a107-18b11520bf8e

任何人都可以提供一些想法吗?非常感谢!

从以上链接复制:

  

如果我使用ShowDialog将表单显示为模式,它会显示在我的主监视器上,并且在那里表现得很好(最大化,最小化等等)。

     

如果我在第二台或第三台显示器上移动表单,然后最大化   它,上面的整个栏停止工作:从左(系统菜单)到   对(恢复或最小化或关闭),包括中间(双倍   点击栏不恢复。

     

在某些情况下,当我翻过时,鼠标光标会变为“大小”   表格栏。左键单击并移动会调整表单大小!

2 个答案:

答案 0 :(得分:0)

正如他们在上述链接中的msdn网站上观察到的那样,如果您的第二台显示器配置在主显示器的左侧,而不是在右侧显示器时,则会发生这种情况。

这发生在VS2010和VS2012中,包括C#和VB.NET。

1)创建Windows窗体应用程序

2)在表单中添加一个按钮

3)对于按钮的按钮单击处理程序代码:

    private void button1_Click(object sender, EventArgs e)
    {
        Form f = new Form();
        f.ShowDialog();
    }

4)运行应用程序,单击按钮。将第二个表单拖动到另一个监视器,并最大化。

5)尽管可以,但现在禁用了所有标题栏按钮:最小化,恢复/最大化,关闭    通过右键单击上下文菜单还原。在主显示器上最大化不会这样做。

答案 1 :(得分:0)

我在左边第二个屏幕遇到了同样的问题,直到我将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