Winforms Powershell窗体:如何查找基于name属性的控件
我如何在表单中列出所有控件,其中(name)-property以某种特定内容开头,然后在foreach中使用它 我在多个Winforms Powershell窗体:如何查找基于name属性的控件,winforms,powershell,Winforms,Powershell,我如何在表单中列出所有控件,其中(name)-property以某种特定内容开头,然后在foreach中使用它 我在多个选项卡页面下有多个分组框,其中名称以gbs开头(例如:gbs1、gbs2、gbs3++)。现在我想禁用所有以gbs*开头的GroupeBox,比如说单击一个botton,而不必手动列出所有GroupBox 我试着去查,但找不到好的文档。我可能在寻找错误的词 我猜这是一个开始,我已经走了这么远,但我不确定从这里走到哪里,或者我是否已经走远了 $list = @($MainForm
选项卡页面下有多个分组框
,其中名称
以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控件的?我在问题的底部添加了一段代码,现在让您看看:)(在注释中解释可能会有点冗长和混乱,也许其他人会发现它很有用)。