PowerShell GUI窗口缩放异常:锚定控件后无法缩小窗口
解决PowerShell WinForms窗口缩小被按钮阻碍的问题
问题根源在于你开启了窗体的AutoSize属性,同时按钮初始位置与窗体最小尺寸未合理设置,导致窗体无法缩小到按钮占据范围之外。按以下步骤修改即可解决:
- 关闭窗体的
AutoSize属性:该属性会强制窗体自动适配所有控件的总大小,直接限制了窗体缩小的空间。 - 设置窗体的
MinimumSize:给窗体设定合理的最小尺寸,避免窗口被缩至不合理的大小。 - 调整按钮初始位置:让按钮距离窗体右下角保持固定边距,而非使用固定坐标,配合
Anchor属性实现正常的随窗口缩放。
修改后的完整代码:
Add-Type -assembly System.Windows.Forms $searchForm = New-Object System.Windows.Forms.Form $searchForm.Size = New-Object System.Drawing.Size(200, 200) # 关闭AutoSize,避免强制适配控件大小 $searchForm.AutoSize = $false $searchForm.AutoScale = $true # 设置最小尺寸,防止窗口缩得太小 $searchForm.MinimumSize = New-Object System.Drawing.Size(150, 150) $CANCELButton = New-Object System.Windows.Forms.Button $CANCELButton.Size = New-Object System.Drawing.Size(120, 30) # 调整初始位置,让按钮距离右下角各20像素边距 $CANCELButton.Location = New-Object System.Drawing.Size( $searchForm.ClientSize.Width - $CANCELButton.Size.Width - 20, $searchForm.ClientSize.Height - $CANCELButton.Size.Height - 20 ) $CANCELButton.Text = "CANCEL" $CANCELButton.Add_Click({$searchForm.Close()}) $searchForm.Controls.Add($CANCELButton) $CANCELButton.Anchor = "Bottom,Right" $searchForm.ShowDialog()
额外说明:
- 设置
Anchor = "Bottom,Right"后,按钮会始终保持与窗体右下角的边距不变,无论窗口放大还是缩小。 - 设置
MinimumSize是为了避免窗口缩小到比按钮还小的尺寸,此时按钮会被部分遮挡,但不会阻碍窗口缩小到设定的最小尺寸。
内容的提问来源于stack exchange,提问作者raz0shi
相关产品推荐
相关产品推荐

