全屏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; } 

如果您在下面的截图仔细观察,顶部和底部区域由几个像素切断。另外,如果最大化,窗口仍然不覆盖任务栏。

请注意,我只连接了一台显示器。没有辅助显示。

有关如何解决上述两个问题的任何建议,将不胜感激。

Screenshot of app in maximized mode

UPDATE:上面的代码似乎没有MenuStripStatusStrip与形式很好地工作。

+0

任务栏总是在窗口的顶部出现,即使它被设置为自动隐藏。另请注意,根据[WorkingArea's](https://msdn.microsoft.com/en-us/library/system.windows.forms.screen.workingarea(v = vs.110).aspx)文档,它* doesn' t *在自动隐藏模式下考虑折叠任务栏的大小。您是否尝试创建Kiosk应用程序? –

+0

@实用性:更新了屏幕截图。以全尺寸打开图像并查看顶部菜单栏和底部状态条。边界形式似乎从小于零(Y1)开始,似乎结束于大于工作区域高度(Y2)。 –

+1

FWIW,我试了你的代码,并在两种情况下(调试或不),它在我的显示器上按预期工作,没有裁剪。你的代码似乎很好,但不知道为什么它不适用于你的情况。 –

这是我用于全屏的代码。我创建了一个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; 
     } 
    } 
} 
+0

谢谢。在设置'FormBorderStyle'之前,似乎将'WindowState'设置为'Normal'就行。这可能是因为表单设置为在设计器中最大化。 –

+0

这是另一个问题,但暂停/恢复布局在我的情况没有帮助。有很多通过代码进行UI定制,并在启动时闪烁很多。 –

+0

@RaheelKhan我没有检查它的真实效果,但基于这些方法的期望,我使用了它们。 –