vb.net - 如何使用转义键控制表单是否全屏
问题描述
我正在尝试使用 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 任务栏之外的所有内容。帮助将不胜感激。
解决方案
您可能难以遵循自己的代码,因为有太多重复。我摆脱了选择案例。我还删除了可能在设计时设置的表单属性的所有代码。
我希望您在其他地方声明并实例化了 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。
推荐阅读
- java - Async 方法的行为不是异步的
- php - 如何根据 laravel 复选框值更新数据库
- arduino - 可以用 Node-red 和 Arduino 草图一起控制 Arduino 吗?
- python - Python 如何为列表中的每个项目创建集合?
- windows - 设置 Windows 资源管理器的视图默认布局
- c# - .NET 异步/等待,是否收集了变量垃圾?
- ssl-certificate - 免费和付费 SSL 证书握手之间的技术区别是什么?
- mysql - mysql sum(column) 从动态表中仅获取一行的值
- mysql - cast 属性用于外键查询而不是原生类型
- javascript - react-native 应用程序中的 Amazon Lex 应查询 SQL 数据库并回答用户问题