【问题标题】:Powershell form: how can I find controls based on name-propertyPowershell 表单:如何根据名称属性找到控件
【发布时间】:2017-10-12 21:13:32
【问题描述】:

如何在我的表单中列出所有控件,其中 (name)-property 以特定的东西开头,然后在 foreach 中使用它?

我在多个tabpages 下有多个groupboxes,其中namegbs 开头(例如: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


【解决方案1】:

对于在列表中查找项目,Where-Object 是您的 CmdLet 选择!

在你的情况下像

$list = $MainForm.Controls | Where-Object {$_.Name -like "gbs*"}

会正常工作。您可以将结果存储在一个变量中(如上所示)并在foreach 中使用它,或者将结果列表直接通过管道传输到ForEach-Object 并在那里处理它,如下所示:

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

【讨论】:

  • 感谢您的回答。我一直在玩这个,也在标签页中(你告诉我有它自己的容器) - 我现在能够列出标签页中的所有组框并使用 ForEach-Object 使用它们。这是完美的,再次感谢!
  • 不错!别客气。您是如何浏览标签页控件的?
  • 我现在将我最终得到的代码添加到问题的底部,供您查看:) (在评论中解释会有点冗长和混乱 -也许其他人会觉得它有用)。
猜你喜欢
  • 2017-10-23
  • 2021-12-25
  • 2020-04-14
  • 2011-07-27
  • 1970-01-01
  • 1970-01-01
  • 2020-10-30
相关资源
最近更新 更多