在powershell studio中清除checkedboxlist中的复选框

在powershell studio中清除checkedboxlist中的复选框,powershell,checkboxlist,Powershell,Checkboxlist,我有一个巨大的checkedboxlist,我已经创建了它,我需要一个按钮来清除所有选中的项目。以下是我所拥有的: $btnResetGroups_Click = { foreach ($chkbox in $chklistGroups) { $chkbox.ClearSelected() # I tried to do $chkbox.Checked = $false but it doesn't recognize 'checked' as a proper

我有一个巨大的checkedboxlist,我已经创建了它,我需要一个按钮来清除所有选中的项目。以下是我所拥有的:

 $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) }
}

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

$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。

它不应该是
$chkbox.Checked=$false
?因为
$chkbox
是您想要更改的对象,所以在我发布它时意识到这是一个错误。我已经改变了它,但它仍然不起作用。当我键入
$chkbox
时,它不会将checked识别为
$chkbox
的属性。知道为什么吗?接下来要检查的是确保
$chklistGroups
中包含正确的内容。如果未正确填充,则可能导致此问题如果填充正确,则我将继续键入每个复选框的名称并执行
checkbox.Checked=$false
。我个人从来没有使用过foreach循环来取消选中复选框,但理论上它应该仍然可以工作,我实际上希望有一种不用foreach的方法。你可能会认为有一种方法可以清除整个内容,而不必循环遍历列表中的每一项,特别是因为这个列表很容易包含300多项。+1我同意@Jason Snell的观点。按照您最初发布的方式@Matt it将不起作用,但只要您的
$chklistGroups
被正确填充,Jason的绝对是正确的。这让我感到奇怪,因为这应该会起作用。我的
$chklistGroups
确实填充正确,这就是为什么我对清除所有这些问题感到困惑的原因。您如何填充
$chklistGroups
?@Matt可能是一个范围问题,请尝试
foreach($script:chklistGroups中的chkbox)
。您正在运行哪个版本的PowerShell和CLR(
$PSVersionTable
)?我正在运行5.1.14393.1480版本的PowerShell和CLR版本4.0.30319.42000