2016-01-24 7 views
0

У меня есть CheckedListBox в Powershell. Когда я выбираю какой-либо флажок, результат текста пуст. Когда я выбираю второй флажок, отображается первый результат.CheckedListBox результат

Я использую следующий код для CheckedListBox:

# Code 
$ListView = New-Object System.Windows.Forms.CheckedListBox 
$ListView.Location = New-Object System.Drawing.Size(10,40) 
$ListView.Size = New-Object System.Drawing.Size(533,325) 
$ListView.CheckOnClick = $True 
$ListView.Add_ItemCheck({ 
    for ($i = 0; $i - ($ListView.Items.Count-1); $i++) 
    { 
    if ($ListView.GetItemChecked($i)) 
    { 
    $s = $s + $ListView.Items[$i].ToString(); 
    } 
    } 

    Write-host $s 

}) 

ответ

0

GetItemChecked($i) только вернет правильный результат для проверки элемента, вызвавшего событие после обработчик события побежали.

Вы можешь inspect the event arguments for the new value вещей:

$ListView.Add_ItemCheck({ 

    param($sender,$e) 

    $s = "" 

    for ($i = 0; $i -le ($ListView.Items.Count-1); $i++) 
    { 
     # Check if $i is the index of the item we just (un)checked 
     if($e.Index -eq $i) 
     { 
      # Inspect the new checked-state value 
      if($e.NewValue -eq 'Checked') 
      { 
       $s += $ListView.Items[$i] 
      } 
     } 
     elseif ($ListView.GetItemChecked($i)) 
     { 
      # Item is already checked 
      $s += $ListView.Items[$i] 
     } 
    } 

    Write-host $s 
}) 
+0

Thx Mathias, он работает как шарм :) – questhome

+0

Матиас, когда я снимите коробку текст не будет удален. Он будет удален, когда я сниму второй блок. Ты можешь помочь мне с этим ??? – questhome

+0

@questhome да, обновленный ответ с '$ e.NewValue -eq 'Checked'' –

Смежные вопросы