VB.net无边框表格最大化任务栏

时间:2015-01-30 17:24:41

标签: vb.net maximize taskbar maximize-window

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

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

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

4 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:2)

使用&#34;工作区&#34;屏幕:

    Me.Bounds = Screen.GetWorkingArea(Me)

答案 2 :(得分:1)

你最好这样做:

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

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

答案 3 :(得分: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