3

当我最大化我的无边框表单时,表单会覆盖整个屏幕,包括任务栏,我不希望它这样做。我发现很难在网上找到解决我的问题的方法,我想出的只是下面的代码,它会在短时间内显示任务栏,但随后消失并且表单仍然占据整个屏幕。

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

我开始认为解决我的问题的唯一方法是找到屏幕尺寸高度减去任务栏高度以获得表单高度,但我希望可能有一个更简单的答案。

4

4 回答 4

5

使用表单的 Load 事件设置其最大大小,如下所示:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Me.MaximumSize = Screen.FromRectangle(Me.Bounds).WorkingArea.Size
End Sub

现在最大化它会将大小限制为监视器的工作区域,即监视器大小减去任务栏。

于 2015-01-30T17:47:51.513 回答
2

使用屏幕的“工作区”:

    Me.Bounds = Screen.GetWorkingArea(Me)
于 2015-01-30T17:43:19.323 回答
1

你最好这样做:

Me.MaximumSize = Screen.FromControl(Me).WorkingArea.Size

因为有些用户使用多台显示器。因此,如果您使用 Hans Passant 的方式,当用户将应用程序最大化到辅助监视器时,应用程序将获得主监视器的工作区域大小,并且看起来很糟糕!

于 2016-05-14T10:01:01.570 回答
0

我认为这是解决您的问题的更好方法

  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
于 2019-03-05T13:13:36.003 回答