【问题标题】:Full screen Windows Form goes beyond screen dimensions全屏 Windows 窗体超出屏幕尺寸
【发布时间】:2016-09-21 19:57:55
【问题描述】:

我有一个 WinForms 应用程序 (.NET 4),需要全屏显示或无边框最大化。

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

如果您仔细查看下面的屏幕截图,顶部和底部区域被截断了几个像素。此外,如果最大化,窗口仍然不会覆盖任务栏。

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

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

更新:上面的代码似乎适用于没有MenuStripStatusStrip 的表单。

【问题讨论】:

  • 任务栏总是出现在窗口的顶部,即使它被设置为自动隐藏。另请注意,根据WorkingArea's 文档,它考虑在自动隐藏模式下折叠任务栏的大小。您是否正在尝试创建 Kiosk 应用程序?
  • @utility:更新了屏幕截图。以全尺寸打开图像并查看顶部菜单栏和底部状态条。表单边界似乎开始于小于零 (Y1) 并且似乎结束于大于工作区域高度 (Y2)。
  • @GrantWinney:是的,请参阅下面我对 Reza 回答的评论。我最初在设计器中将表单设置为最大化,但忘记撤消了。
  • 这段代码属于构造函数,从不在Shown中。除了避免非常难看的闪烁之外,您还可以避免这些属性具有的令人讨厌的副作用。就像在最大化窗口的大小上猛拉地板垫一样。
  • @HansPassant:谢谢!我没有意识到FormBorderStyleWindowState 属性会产生如此糟糕的效果(更是如此,因为我在构造函数之后通过代码手动布局控件)。按照您的建议,将闪烁从几秒钟减少到几乎为零。

标签: c# .net winforms fullscreen


【解决方案1】:

这是我用于全屏的代码。我为我的表单创建了一个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 我没有检查它的真正有效性,但基于对这些方法的期望,我使用了它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-07
  • 2018-12-23
  • 1970-01-01
  • 2012-12-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多