【发布时间】:2017-10-12 21:13:32
【问题描述】:
如何在我的表单中列出所有控件,其中 (name)-property 以特定的东西开头,然后在 foreach 中使用它?
我在多个tabpages 下有多个groupboxes,其中name 以gbs 开头(例如:gbs1、gbs2、gbs3 ++)。现在我想禁用所有以gbs* 开头的分组框,比如单击一个按钮,而不必手动列出所有分组框。
我已经尝试查找它,但我找不到关于它的好的文档。我可能正在搜索错误的单词...
我猜这是一个开始,就我所到之处而言,但我不知道从这里去哪里或者我是否已经离开了;
$list = @($MainForm.Controls.Find -like 'gbs*')
foreach ($item in $list){$item.enabled = $false} #Just a example of what I'm thinking
目的: 我正在创建一个将自动化活动目录的 .exe 表单。该表单包含一堆设置,所有这些设置都在这些组框中。我将有一个“编辑模式”,以便当它处于活动状态时 - 启用组框。没有时,禁用。
解决方案,感谢@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 }
【问题讨论】:
-
所以您正在搜索类似
$list = $MainForm.childNodes | Where-Object {$_.Name -like "gbs*"}的内容? -
...您的脚本的上下文是什么? Internet Explorer 实例?
Invoke-WebRequest? -
感谢您的回复,@Clijsters。这是一个以多种方式自动化活动目录的程序。我想要做的是拥有这种“编辑模式”,其中包含设置(有很多设置)的所有组框将被禁用或启用天气您是否处于编辑模式。 --- 我试过
$MainForm.Controls | Where-Object { $_.Name -like "gbs*" },它确实给了我一个清单,太棒了!但是,我认为使用$mainform会包含标签页等,但它似乎没有这样做。大多数组框都在标签页中。我当然会测试更多。 -
有趣 - 我想到的是 HTML 内容,而不是表单应用程序。请相应地标记您的问题,我相信会出现更多的回答者和评论者!标签页有自己的控件容器。在您的问题中添加更多代码,我们可以为您提供帮助,这样您的表单的组织方式就会更加清晰
-
我的错,我会尽快添加更多信息。谢谢!
标签: winforms powershell