【发布时间】: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 多个项目。