当我最大化无边框形式时,表单覆盖整个屏幕,包括任务栏,我不希望它这样做。我发现很难在网上找到我的问题的解决方案,所有我想出的是下面的代码,它显示任务栏很短的时间,然后消失,表单仍占用整个屏幕。
Private Sub TableLayoutPanel1_DoubleClick(sender As Object, e As MouseEventArgs) Handles TableLayoutPanel1.DoubleClick
If e.Location.Y < 30 Then
Me.WindowState = FormWindowState.Maximized
Me.ControlBox = True
End If
End Sub
我开始认为解决我的问题的唯一方法是找到屏幕尺寸高度减去任务栏高度以获得表格高度,但我希望可能有一个更简单的答案。
使用表单的Load事件来设置其最大大小,如下所示:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.MaximumSize = Screen.FromRectangle(Me.Bounds).WorkingArea.Size
End Sub
现在最大化它会限制显示器工作区域的大小,即监视器大小减去任务栏。
使用屏幕的“工作区域”:
Me.Bounds = Screen.GetWorkingArea(Me)
你最好这样做:
Me.MaximumSize = Screen.FromControl(Me).WorkingArea.Size
因为一些用户使用多个监视器。因此,如果您使用Hans Passant的方式,当用户将应用程序最大化到辅助监视器时,应用程序将获得主监视器工作区域大小并且看起来很糟糕!
我认为这是解决问题的更好方法
Private Sub main_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.WindowState = FormWindowState.Normal
Me.StartPosition = FormStartPosition.Manual
With Screen.PrimaryScreen.WorkingArea
Me.SetBounds(.Left, .Top, .Width, .Height)
End With
End Sub