它正在抱怨该语句,因为您仍在枚举listbox3.SelectedItems。处理该问题的一种方法可能是记录需要在数组中删除的内容,一旦退出循环(将它们添加到listbox4),请枚举该数组并从listbox3中删除项目。
我有三个列表框。我们称它们为listbox 2, 3 and 4
。
Listbox 2
通过按钮单击事件获取计算机。然后,我创建了>>
和<<
按钮在2
和3
之间移动它们。现在,当我从3
中选择多台计算机并单击另一个名为check
的按钮时–它应检查在3
中选择的服务器是否可ping通,如果ping成功,则将它们移至4
。同时将它们从3
中删除。无法ping的应退回3
。
我不断得到
此枚举器绑定到的列表已被修改。如果列表不变,则只能使用枚举器。
这是我的代码:$ buttonCheckStatus_Click = {$ CheckedServerS = $ listbox3.SelectedItemsforeach($ CheckedServerS中的$ CheckedServer){
If (!(Test-Connection -Cn $CheckedServer -BufferSize 16 -Count 1 -ea 0 -quiet) -eq $true)
{
$cSrvr = $CheckedServer
$listbox4.BeginUpdate()
foreach($s in $cSrvr)
{
$listbox4.Items.Add($s)--->*****
}
$listbox4.EndUpdate()
}
elseif(!(Test-Connection -Cn $CheckedServer -BufferSize 16 -Count 1 -ea 0 -quiet) -eq $false)
{
[void][System.Windows.Forms.MessageBox]::Show("Server $CServers needs Reboot","msg2")
}
}
}
上面的方法工作正常,但是我在列表框3中获得了可ping通到列表框4的服务器,但是:只要在$listbox3.SelectedItems.remove()
下方(在$listbox4.Items.Add($s)
上方标记)添加----> *****
,就会开始发生错误。] >
阅读了一些帖子后,我发现我不能使用foreach
。这就像在吃蛋糕一样。但是我不知道该如何实现。
我有三个列表框。让我们将其称为列表框2、3和4。列表框2通过按钮单击事件获取计算机。然后,我创建了>>和<
它正在抱怨该语句,因为您仍在枚举listbox3.SelectedItems。处理该问题的一种方法可能是记录需要在数组中删除的内容,一旦退出循环(将它们添加到listbox4),请枚举该数组并从listbox3中删除项目。
因此添加
$Pingable=@()
开始循环之前。验证服务器并将其添加到listbox4之后,将服务器添加到循环中的该阵列中
$Pingable +=$s
一旦完成整个循环;枚举数组并将其删除
foreach ($p in $Pingable) { $listbox3.Items.remove($p) }
在您的代码中:
$Pingable=@() $buttonCheckStatus_Click={ $CheckedServerS=$listbox3.SelectedItems foreach ($CheckedServer in $CheckedServerS) { If (!(Test-Connection -Cn $CheckedServer -BufferSize 16 -Count 1 -ea 0 -quiet) -eq $true) { $cSrvr = $CheckedServer $listbox4.BeginUpdate() foreach($s in $cSrvr) { $listbox4.Items.Add($s) $Pingable +=$s } $listbox4.EndUpdate() } elseif(!(Test-Connection -Cn $CheckedServer -BufferSize 16 -Count 1 -ea 0 -quiet) -eq $false) { [void][System.Windows.Forms.MessageBox]::Show("Server $CServers needs Reboot","msg2") } } } foreach ($p in $Pingable) { $listbox3.Items.remove($p) }
它正在抱怨该语句,因为您仍在枚举listbox3.SelectedItems。处理该问题的一种方法可能是记录需要在数组中删除的内容,一旦退出循环(将它们添加到listbox4),请枚举该数组并从listbox3中删除项目。