全屏Windows窗体超出屏幕尺寸
我有一个WinForms应用程序(.NET 4),需要全屏显示或最大化无边框。全屏Windows窗体超出屏幕尺寸
在Form_Shown
事件中使用下面的代码:
#if (DEBUG)
var debug = true;
#else
var debug = false;
#endif
this.Text = "";
this.ControlBox = false;
this.ShowInTaskbar = true;
//this.TopMost = debug;
this.TopLevel = true;
this.FormBorderStyle = FormBorderStyle.None;
if (debug) { this.Bounds = Screen.FromControl(this).WorkingArea; }
else { this.WindowState = FormWindowState.Maximized; }
如果您在下面的截图仔细观察,顶部和底部区域由几个像素切断。另外,如果最大化,窗口仍然不覆盖任务栏。
请注意,我只连接了一台显示器。没有辅助显示。
有关如何解决上述两个问题的任何建议,将不胜感激。
UPDATE:上面的代码似乎没有MenuStrip
或StatusStrip
与形式很好地工作。
这是我用于全屏的代码。我创建了一个FullScreen
属性我的形式,当我需要,我定this.FullScreen = true;
private bool fullScreen = false;
[DefaultValue(false)]
public bool FullScreen
{
get
{
return fullScreen;
}
set
{
fullScreen = value;
if (value)
{
//this.SuspendLayout();
this.WindowState = FormWindowState.Normal;
FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
WindowState = FormWindowState.Maximized;
//this.ResumeLayout(true);
}
else
{
this.Activate();
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;
}
}
}
谢谢。在设置'FormBorderStyle'之前,似乎将'WindowState'设置为'Normal'就行。这可能是因为表单设置为在设计器中最大化。 –
这是另一个问题,但暂停/恢复布局在我的情况没有帮助。有很多通过代码进行UI定制,并在启动时闪烁很多。 –
@RaheelKhan我没有检查它的真实效果,但基于这些方法的期望,我使用了它们。 –
任务栏总是在窗口的顶部出现,即使它被设置为自动隐藏。另请注意,根据[WorkingArea's](https://msdn.microsoft.com/en-us/library/system.windows.forms.screen.workingarea(v = vs.110).aspx)文档,它* doesn' t *在自动隐藏模式下考虑折叠任务栏的大小。您是否尝试创建Kiosk应用程序? –
@实用性:更新了屏幕截图。以全尺寸打开图像并查看顶部菜单栏和底部状态条。边界形式似乎从小于零(Y1)开始,似乎结束于大于工作区域高度(Y2)。 –
FWIW,我试了你的代码,并在两种情况下(调试或不),它在我的显示器上按预期工作,没有裁剪。你的代码似乎很好,但不知道为什么它不适用于你的情况。 –