【问题标题】:Clearing checkboxes in a checkedboxlist in powershell studio在powershell studio中清除checkboxlist中的复选框
【发布时间】:2017-08-07 16:05:43
【问题描述】:

我创建了一个巨大的复选框列表,我需要一个按钮来清除所有选中的项目。这是我所拥有的:

 $btnResetGroups_Click = {
    foreach ($chkbox in $chklistGroups)
    {
        $chkbox.ClearSelected() # I tried to do $chkbox.Checked = $false but it doesn't recognize 'checked' as a property
    }

    #   $chklistGroups.ClearSelected()
}

这不起作用有什么原因吗?

编辑:这是填充复选框列表的代码:

$formPTINewUserCreation_Load={
    Import-Module ActiveDirectory

    # read in the XML files
    [xml]$NewUserXML = Get-Content -LiteralPath \\papertransport.com\files\UserDocuments\mneis\Code\XML\NewUserTest.xml

    # popoulate the checklist with the groups from active directory
    $AD_ResourceGroups = Get-ADGroup -filter * -SearchBase "OU=Resource Groups,OU=Groups,OU=Paper Transport,DC=papertransport,DC=com"
    $AD_ResourceGroups | ForEach-Object { $chklistGroups.Items.Add($_.name) }
}

【问题讨论】:

  • 不应该是$chkbox.Checked = $false吗?因为$chkbox是你要改变的对象
  • 当我发布它时意识到这是一个错误。我已经改变了它,它仍然无法正常工作。当我键入$chkbox 时,它不会将选中的属性识别为$chkbox 的属性。知道这是为什么吗?
  • 接下来要检查的是确保$chklistGroups 中包含正确的内容。如果未正确填充,则可能导致此问题
  • 如果填充正确,那么我会继续输入每个复选框的名称并执行checkbox.Checked = $false。我个人从未使用过 foreach 循环来取消选中复选框,但理论上它仍然可以工作
  • 我实际上希望有一种方法可以在不使用 foreach 的情况下做到这一点。您可能会认为有一种方法可以清除整个内容,而不必遍历列表中的每个项目,特别是因为这个列表很容易包含 300 多个项目。

标签: powershell checkboxlist


【解决方案1】:

为确保在单击按钮时未选中每个复选框,代码必须循环通过包含复选框的容器。

$btnResetGroups_Click = {
    # get the container (in this case it looks like a list box)
    $myCheckBoxes = $myListBox.Items
    # next loop through each checkbox in the array of checkbox objects
    foreach ($chkbox in $myCheckBoxes)
    {
        $chkbox.Checked = $false
    }
}

这将确保容器中的每个复选框都设置为 false。从 GUI 的风格来看,我假设这是 WPF 而不是 Winforms。

【讨论】:

  • +1 我同意@Jason Snell。按照您最初发布的方式进行操作@Matt 它不会起作用,但是只要您的$chklistGroups 被正确填充,Jason 的绝对是正确的
  • 这让我大吃一惊,因为这应该可行。我的$chklistGroups 确实填充正确,这就是为什么我很困惑为什么我在清除所有这些时遇到了这么多麻烦。
  • 你是如何填写你的$chklistGroups的?
  • @Matt 可能是范围问题,请尝试foreach($chkbox in $script:chklistGroups)。您正在运行哪个版本的 PowerShell 和 CLR ($PSVersionTable)?
  • 我正在为 powershell 版本和 CLRVersion 4.0.30319.42000 运行 5.1.14393.1480
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-25
  • 1970-01-01
  • 1970-01-01
  • 2012-02-22
  • 1970-01-01
相关资源
最近更新 更多