如何在 PowerShell 中使用 GUI 最大化 groupbox?

How to use maximize groupbox using GUI in PowerShell?

我想在我的 GUI 窗体中创建一个组框。我为我的表单使用最大化的 windowsState。我想使用组框,我需要使组框也最大化,但要结合边距和填充。所以即使分辨率屏幕改变,分组框的大小和位置也不会改变。 我试过这个,但它不起作用。 任何人都可以帮助我。谢谢。

Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.Application]::EnableVisualStyles()

$Form                            = New-Object system.Windows.Forms.Form
$Form.text                       = "Form"
$Form.TopMost                    = $false
$Form.FormBorderStyle            = "FixedDialog"
$Form.MaximizeBox                = $false
$Form.startposition              = "centerscreen"
$Form.WindowState                = 'Maximized'


$Groupbox1                       = New-Object system.Windows.Forms.Groupbox
$Groupbox1.text                  = "Group Box"
$Groupbox1.location              = New-Object System.Drawing.Point(8,13)
$Groupbox1.Padding               = New-Object -TypeName System.Windows.Forms.Padding -ArgumentList (0,5,5,0)
$Groupbox1.Margin                = 2,2,2,2

$Form.controls.AddRange(@($Groupbox1))
[void]$Form.ShowDialog()

您必须首先创建一个 100% 宽度和高度的面板。然后将组框放在面板内,这应该可以工作:

Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.Application]::EnableVisualStyles()

$Form                            = New-Object system.Windows.Forms.Form
$Form.text                       = "Form"
$Form.TopMost                    = $false
$Form.FormBorderStyle            = "FixedDialog"
$Form.MaximizeBox                = $false
$Form.startposition              = "centerscreen"
$Form.WindowState                = 'Maximized'

$Panel = New-Object System.Windows.Forms.TableLayoutPanel
$panel.Dock = "Fill"
$panel.ColumnCount = 1
$panel.RowCount = 1
$panel.CellBorderStyle = "single"
$panel.ColumnStyles.Add((new-object System.Windows.Forms.ColumnStyle([System.Windows.Forms.SizeType]::Percent, 100)))
$panel.RowStyles.Add((new-object System.Windows.Forms.RowStyle([System.Windows.Forms.SizeType]::Percent, 100)))

$Groupbox1                       = New-Object system.Windows.Forms.Groupbox
$Groupbox1.text                  = "Group Box"
$Groupbox1.location              = New-Object System.Drawing.Point(8,13)
$Groupbox1.Padding               = New-Object -TypeName System.Windows.Forms.Padding -ArgumentList (0,5,5,0)
$Groupbox1.Dock                  = "fill"

$form.controls.add($Panel)
$panel.controls.AddRange(@($Groupbox1))
[void]$Form.ShowDialog()