我试图使我的应用程序能够在全屏/最大化模式之间切换(全屏隐藏工具栏和任务栏,同时最大化显示它们)。
这是我目前的代码,它完成了这个:
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
已更改。不幸的是,由于在Normal
和Maximized
之间切换,这会导致屏幕上出现恼人的闪烁。
我可以提出修复此问题的建议吗?
更新
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
不会阻止它。还有一个建议来解决这个问题吗?也许完全不同的方法是在没有闪烁的情况下完成全屏切换?