首页 > 解决方案 > 如何使用转义键控制表单是否全屏

问题描述

我正在尝试使用 windows 窗体应用程序和设计器在 Visual Studio 中制作一个表单,但是当我尝试使用转义键来最大化/最小化并删除/添加边框时,它并没有覆盖所有的任务栏。

我只是在测试能够进入和退出全屏的功能,以便我将来可能制作的任何表单,到目前为止,除了如图所示的代码之外,我什么都没尝试,并将代码作为单独的子程序放在案例选择中。

Public Sub FullscreenEnterExit(ByVal sender As Object, ByVal d As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    Select Case d.KeyValue
        Case Keys.Escape
            If fullscreen = False Then
                Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None
                Me.ClientSize = New System.Drawing.Size(1920, 1080)
                Me.Controls.Add(Me.PictureBox1)
                Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
                Me.MaximumSize = New System.Drawing.Size(1920, 1080)

                Me.Name = "window"
                Me.StartPosition = System.Windows.Forms.FormStartPosition.Manual
                Me.Text = "Form1"
                Me.TopMost = True
                Me.WindowState = System.Windows.Forms.FormWindowState.Maximized
                CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit()
                Me.ResumeLayout(False)
                fullscreen = True
            ElseIf fullscreen = True Then
                Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None
                Me.ClientSize = New System.Drawing.Size(1920, 1080)
                Me.Controls.Add(Me.PictureBox1)
                Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
                Me.MaximumSize = New System.Drawing.Size(1920, 1080)

                Me.Name = "window"
                Me.StartPosition = System.Windows.Forms.FormStartPosition.Manual
                Me.Text = "Form1"
                Me.TopMost = True
                Me.WindowState = System.Windows.Forms.FormWindowState.Maximized
                CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit()
                Me.ResumeLayout(False)
                fullscreen = False
            End If
    End Select
End Sub

我会发布全屏外观的图像,但您需要 10 声望。它已最大化,但涵盖了除大约 3/4 任务栏之外的所有内容。帮助将不胜感激。

标签: vb.netformsvisual-studiofullscreen

解决方案


您可能难以遵循自己的代码,因为有太多重复。我摆脱了选择案例。我还删除了可能在设计时设置的表单属性的所有代码。

我希望您在其他地方声明并实例化了 PictureBox ,这将不起作用。我原以为图片框会在设计时添加,因为它与窗口状态没有任何关系。

我不知道您为什么要尝试将 PictureBox 的类型更改为接口 SupportInitialization。

您同时拥有 If 和 Else If 设置 .Maximized 为 True。我不认为那是你的本意。

ResumeLayout(False) 应该做什么?

Public Sub FullscreenEnterExit(ByVal sender As Object, ByVal d As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    If d.KeyCode = Keys.Escape Then
        If fullscreen Then
            FormBorderStyle = FormBorderStyle.FixedSingle
            WindowState = FormWindowState.Normal
        Else
            FormBorderStyle = FormBorderStyle.None
            WindowState = FormWindowState.Maximized
        End If
        fullscreen = Not fullscreen
    End If
End Sub

将窗体的 KeyPreview 属性设置为 True。


推荐阅读