如何使VB.NET MDI父级全屏显示(不最大化)



我以为这需要5分钟。花了3个小时还没弄明白。。。

我有一个MDI应用程序,希望用户能以一种简单的方式使其全屏而不最大化,所以我添加了一个Windows/全屏菜单选项,并放入以下代码来处理它:

Me.Left = 0
Me.Top = 0
Me.Width = Screen.PrimaryScreen.WorkingArea.Width
Me.Height = Screen.PrimaryScreen.WorkingArea.Height

问题是这会在左侧、底部和右侧留下间隙。顶部是唯一能按预期工作的屏幕边缘——紧贴顶部。其他的距离屏幕边缘约1/8英寸,距离底部任务栏约1/8英寸。

当然,我可以把它弄混,把+10(或其他什么(硬编码到高度和宽度,把-5硬编码到左边。但这看起来像是一个拼凑(一个拼凑(,可能不会对每个显示器都一样。

我在清单中尝试了DPI意识的东西,但没有什么区别。我也试过Screen.PrimaryScreen.Bounds and Screen。PrimaryScreen.WorkingArea.X/Y,也没有什么乐趣。

真的不应该这么难。Wth?

试试这个:

Dim diffW As Integer = Me.Width - Me.ClientSize.Width
Dim diffH As Integer = Me.Height - Me.ClientSize.Height
Me.ClientSize = New Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height - diffH)
Me.Location = New Point(-diffW / 2, 0)

我不太确定我是否理解正确:你不想让用户按下最大化按钮?相反,你试图提供自己的"最大化"功能?

好吧,听起来很奇怪,但无论如何:

你已经试过了吗:

Screen.PrimaryScreen.WindowState = FormWindowState.Maximized

(抱歉,如果存在语法混乱,请从C#代码中复制(

我知道已经晚了,但这次黑客攻击可以解决:

对于c#

this.FormBorderStyle = FormBorderStyle.None;
this.WindowState = FormWindowState.Maximized;

对于vb:

Me.FormBorderStyle = FormBorderStyle.None
Me.WindowState = FormWindowState.Maximized

最新更新