Winforms Powershell窗体:如何查找基于name属性的控件

Winforms Powershell窗体:如何查找基于name属性的控件,winforms,powershell,Winforms,Powershell,我如何在表单中列出所有控件,其中(name)-property以某种特定内容开头,然后在foreach中使用它 我在多个选项卡页面下有多个分组框,其中名称以gbs开头(例如:gbs1、gbs2、gbs3++)。现在我想禁用所有以gbs*开头的GroupeBox,比如说单击一个botton,而不必手动列出所有GroupBox 我试着去查,但找不到好的文档。我可能在寻找错误的词 我猜这是一个开始,我已经走了这么远,但我不确定从这里走到哪里,或者我是否已经走远了 $list = @($MainForm

我如何在表单中列出所有控件,其中(name)-property以某种特定内容开头,然后在foreach中使用它

我在多个
选项卡页面下有多个
分组框
,其中
名称
gbs
开头(例如:gbs1、gbs2、gbs3++)。现在我想禁用所有以
gbs*
开头的GroupeBox,比如说单击一个botton,而不必手动列出所有GroupBox

我试着去查,但找不到好的文档。我可能在寻找错误的词

我猜这是一个开始,我已经走了这么远,但我不确定从这里走到哪里,或者我是否已经走远了

$list = @($MainForm.Controls.Find -like 'gbs*')

foreach ($item in $list){$item.enabled = $false} #Just a example of what I'm thinking

目的: 我正在创建一个.exe表单,它将自动运行active directory。表单包含一组设置,所有设置都在这些GroupBox中。我将有一个“编辑模式”,这样当它处于活动状态时,组框将被启用。如果没有,则禁用


解决方案,感谢@Clijsters的帮助:

    #Get all the tabpages
    $script:tabpages = $tabTasks.Controls | Where-Object { $_.Name -like "tp*" } | select Name, Controls
    $script:tabpages += $tabSettings.Controls | Where-Object { $_.Name -like "tp*" } | select Name, Controls

    #Get groupboxes in tabpages
    $script:groupboxes = [System.Object]$tabpages.Controls

    #Disable
    $groupboxes | Where-Object { $_.Name -like "gbs*" } | ForEach-Object { $_.Enabled = $true }

要在列表中查找项目,您可以选择CmdLet

就你的情况来说

$list = $MainForm.Controls | Where-Object {$_.Name -like "gbs*"}
会很好的。您可以将结果存储在变量中(如上图所示),并在
foreach
中使用它,或者将结果列表直接导入并在其中进行处理,如下所示:

$MainForm.Controls | Where-Object {$_.Name -like "gbs*"} | ForEach-Object {Do Something}

因此,您正在搜索类似于
$list=$MainForm.childNodes | Where Object{$\uu.Name-类似于“gbs*”}
?…脚本的上下文是什么?Internet Explorer实例<代码>调用WebRequest
?感谢您的回复,@Clijsters。这是一个以多种方式自动化active directory的程序。我想做的是让这个“编辑模式”在所有包含设置(有很多设置)的分组框都被禁用或启用,不管你是否处于编辑模式我尝试了
$MainForm.Controls | Where对象{$\u.Name-比如“gbs*”}
,它确实给了我一个列表,太棒了!然而,我认为通过使用
$mainform
它将包括tabpages之类的内容,而这似乎并没有做到。大多数分组框都在选项卡页中。当然,我还会测试一些。有趣的是,我没有考虑HTML内容,而不是表单应用程序。请相应地标记您的问题,我相信会出现更多的回答者和评论者!选项卡页有自己的控件容器。在你的问题中添加更多的代码,我们可以帮助你,这样你的表单组织起来会更清晰。我很糟糕,我很快会添加更多的信息。谢谢谢谢你的回答。我在tabpages(你告诉我它有自己的容器)中也一直在玩这个,现在我可以列出tabpages中的所有GroupBox,并使用ForEach对象处理它们。这是完美的,再次感谢!美好的不客气。您是如何浏览tabpages控件的?我在问题的底部添加了一段代码,现在让您看看:)(在注释中解释可能会有点冗长和混乱,也许其他人会发现它很有用)。