在切换全屏模式时,在运行时隐藏任务栏

时间:2016-09-21 11:20:08

标签: vb.net winforms fullscreen taskbar

我试图使我的应用程序能够在全屏/最大化模式之间切换(全屏隐藏工具栏和任务栏,同时最大化显示它们)。

这是我目前的代码,它完成了这个:

Private Sub Form_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    FormBorderStyle = FormBorderStyle.None
    WindowState = FormWindowState.Maximized
End Sub

Sub fullscreen()
    FormBorderStyle = FormBorderStyle.None
End Sub

Sub maximized()
    FormBorderStyle.Sizable
End Sub

当表单加载并全屏显示时,任务栏将被隐藏。但是,在fullscreen之后调用maximized时,任务栏不会再次隐藏自己。

我发现这是因为当这两行被一起调用时,任务栏只隐藏自己:

FormBorderStyle = FormBorderStyle.None
WindowState = FormWindowState.Maximized

fullscreen更改为:

Sub fullscreen()
    FormBorderStyle = FormBorderStyle.None
    WindowState = FormWindowState.Maximized
End Sub

虽然没有解决这个问题。

我实际上需要将其更改为:

Sub fullscreen()
    FormBorderStyle = FormBorderStyle.None
    WindowState = FormWindowState.Normal
    WindowState = FormWindowState.Maximized
End Sub

因此表单注册WindowState已更改。不幸的是,由于在NormalMaximized之间切换,这会导致屏幕上出现恼人的闪烁。

我可以提出修复此问题的建议吗?

更新

Sub fullscreen()
    SuspendLayout()

    FormBorderStyle = FormBorderStyle.None
    WindowState = FormWindowState.Normal
    WindowState = FormWindowState.Maximized

    ResumeLayout(True)
End Sub

现在调用fullscreen时没有闪烁(在进一步调试时,由于某种原因,这似乎并非完全正确)。但是,这让我意识到maximized也会导致闪烁甚至:

Sub maximized()
    SuspendLayout()

    FormBorderStyle.Sizable

    ResumeLayout(True)
End Sub

不会阻止它。还有一个建议来解决这个问题吗?也许完全不同的方法是在没有闪烁的情况下完成全屏切换?

0 个答案:

没有答案