繁体   English   中英

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

[英]Modal form loses control box functionality when displayed on a secondary monitor

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

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

谁能提供一些想法? 非常感谢!

从上面的链接复制:

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

如果我在第二个或第三个监视器上移动表单,然后将其最大化,则上方的整个栏将停止工作:从左侧(系统菜单)到右侧(还原或最小化或关闭),包括中间部分(双击该栏)无法还原)。

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

正如他们在上面链接中的msdn站点上所观察到的,如果第二台监视器配置在主监视器的左侧,则发生这种情况,但当它在右侧时,则不会发生这种情况。

这在C#和VB.NET的VS2010和VS2012中都会发生。

1)创建Windows窗体应用程序

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

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

private void button1_Click(object sender, EventArgs e)
    {
        Form f = new Form();
        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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM