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

问题描述 投票:2回答:4

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

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

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

vb.net maximize taskbar maximize-window
4个回答
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

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


2
投票

使用屏幕的“工作区域”:

    Me.Bounds = Screen.GetWorkingArea(Me)

1
投票

你最好这样做:

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

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


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
© www.soinside.com 2019 - 2024. All rights reserved.