在PowerShell中创建.NET表单的过程中,我偶然发现了一个烦恼。我需要能够停用除必须显示的面板之外的所有面板的可见性。为此,搜索System.Windows.Forms.Panel
类型的所有可用变量并将其状态设置为$Panelx.Visible = $False
似乎很方便。
所有变量的示例:
[String]$Stuff = 'Blabla'
$Panel1 = New-Object System.Windows.Forms.Panel
$Panel2 = New-Object System.Windows.Forms.Panel
$Panel3 = New-Object System.Windows.Forms.Panel
$Button = New-Object System.Windows.Forms.Button
$TabControl = New-object System.Windows.Forms.TabControl
这为我提供了正确的结果,但我无法将Visible
状态设置为$False
Get-Variable | ? {$_.Value} | ? {(($_.Value).GetType().Name) -eq 'Panel'} | % {
$_.Visible = $false
}
如何才能列出类型面板的变量,然后将它们放在$Panel.Visible = $False
上?
感谢您的帮助。
答案 0 :(得分:2)
我认为问题是Get-Variable返回PSVariable类型的对象,因此Panel对象在其中定义。使用成员属性value
来检索它,如下所示:
Get-Variable |where {$_.Value -is [System.Windows.Forms.Panel] } | % {$_.value.visible = $false}