当前位置:  开发笔记 > 编程语言 > 正文

如何使WinForms应用程序全屏显示

如何解决《如何使WinForms应用程序全屏显示》经验,为你挑选了4个好方法。

我有一个WinForms应用程序,我试图全屏(有点像VS在全屏模式下).

目前,我设置FormBorderStyleNoneWindowStateMaximized这给我多一点空间,但它并没有在任务栏覆盖,如果它是可见的.

我还需要做些什么才能使用这个空间?

对于奖励积分,我可以采取MenuStrip哪些措施让我的自动隐身也放弃这个空间吗?



1> Henk Holterm..:

对于基本问题,以下将做到这一点(隐藏任务栏)

private void Form1_Load(object sender, EventArgs e)
{
    this.TopMost = true;
    this.FormBorderStyle = FormBorderStyle.None;
    this.WindowState = FormWindowState.Maximized;
}

但是,有趣的是,如果你交换最后两行,任务栏仍然可见.我认为使用属性窗口很难控制这些操作的顺序.


订购问题是为什么以前它不适合我.我实际上是按照该顺序设置属性,但是当窗体已经最大化时,将边框设置为none不会扩展以覆盖任务栏.我通过"恢复"改变边界然后最大化的形式来解决这个问题.
我有正确的顺序,它不起作用.任务栏始终可见,应用程序不在其下方,它只是为任务栏留下了免费的spave.(Win7的)

2> Zignd..:
经过测试的简单解决方案

我一直在SO和其他一些网站寻找这个问题的答案,但是我给出的答案非常复杂,而其他一些答案根本无法正常工作,所以在经过大量的代码测试后我解决了这个难题.

注意:我使用的是Windows 8,而我的任务栏未处于自动隐藏模式.

我发现在执行任何修改之前将WindowState设置为Normal将使用未覆盖的任务栏停止错误.

代码

我创建了这个有两种方法的类,第一种进入"全屏模式",第二种进入"全屏模式".因此,您只需要创建此类的对象,并将要设置为全屏的Form作为参数传递给EnterFullScreenMode方法或LeaveFullScreenMode方法:

class FullScreen
{
    public void EnterFullScreenMode(Form targetForm)
    {
        targetForm.WindowState = FormWindowState.Normal;
        targetForm.FormBorderStyle = FormBorderStyle.None;
        targetForm.WindowState = FormWindowState.Maximized;
    }

    public void LeaveFullScreenMode(Form targetForm)
    {
        targetForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Sizable;
        targetForm.WindowState = FormWindowState.Normal;
    }
}

用法示例

    private void fullScreenToolStripMenuItem_Click(object sender, EventArgs e)
    {
        FullScreen fullScreen = new FullScreen();

        if (fullScreenMode == FullScreenMode.No)  // FullScreenMode is an enum
        {
            fullScreen.EnterFullScreenMode(this);
            fullScreenMode = FullScreenMode.Yes;
        }
        else
        {
            fullScreen.LeaveFullScreenMode(this);
            fullScreenMode = FullScreenMode.No;
        }
    }

我已经在另一个问题上提出了相同的答案,我不确定这个问题是否重复.(链接到另一个问题:如何在任务栏顶部全屏显示Windows窗体?)


出于好奇,为什么你有一个完整的枚举来描述真/假的条件?
很久以前我写这篇文章的时候,我只是在抓写代码,请注意我的年轻愚蠢.它确实毫无意义,我应该简单地使用布尔类型.
啊,无论如何你得到了我的赞成;)

3> Stefan..:

对于menustrip问题,请尝试设置

MenuStrip1.Parent = Nothing

在全屏模式下,它应该消失.

退出fullscreenmode时,menustrip1.parent再次重置为表单,menustrip将再次正常.



4> Raghavendra ..:

您可以使用以下代码来适合您的系统屏幕,并且可以看到任务栏.

    private void Form1_Load(object sender, EventArgs e)
    {   
        // hide max,min and close button at top right of Window
        this.FormBorderStyle = FormBorderStyle.None;
        // fill the screen
        this.Bounds = Screen.PrimaryScreen.Bounds;
    }

无需使用:

    this.TopMost = true;

该行干扰alt+tab切换到其他应用程序.("TopMost"表示窗口保持在其他窗口的顶部,除非它们也标记为"TopMost".)

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有