2017-08-11 1 views
1

私は複数のリストボックスを持っています。ボックス内のアイテムを右クリックすると、そのアイテムのみを選択します。リストボックスの `SelectionMode 'を変更することはできません。なぜなら、左クリックすると、複数の項目を選択できる必要があるからです。ここで複数のリストボックスを右クリックすると、1つのオプションだけが強調表示されます

リストボックスが単一選択ボックスであるときに動作し、私が持っているコードです:

$inputboxSelectedServers.add_MouseDown({     #listbox click event 
    [System.Windows.Forms.MouseEventArgs]$e= $args[1] 
    if ($e.Button -eq [System.Windows.Forms.MouseButtons]::Right){ 
     $index = $inputboxSelectedServers.IndexFromPoint($e.Location) 
     $inputboxSelectedServers.SelectedIndex = $index 
     $Menu2.Show($inputboxSelectedServers, $e.X, $e.Y) #contextMenuStrip 
    } 
}) 

しかし、私は唯一のリストボックスの項目を選択し、右クリックして、マウスの動作を変更する方法を見つけ出すことはできませんマウスは実際にヒットしました。

答えて

0

オクラホマ、しばらくした後、インスピレーションがヒットしました。 MultiExtendedリストボックスを持つために私がしなければならなかったことは、右クリックで選択された1つのアイテムだけが他のすべてのアイテムの選択を解除することでした。このコードでは、forループはリストボックス内のすべての項目の選択を解除し、SelectedIndexプロパティはマウスが右クリックされた項目に設定されます。

$inputboxSelectedServers.add_MouseDown({ 
    [System.Windows.Forms.MouseEventArgs]$e= $args[1] 
    if ($e.Button -eq [System.Windows.Forms.MouseButtons]::Right){ 
     for($i=0;$i -lt $inputboxSelectedServers.Items.Count; $i++){ 
      $inputboxSelectedServers.SetSelected($i,$false) 
     } 

     $index = $inputboxSelectedServers.IndexFromPoint($e.Location) 
     $inputboxSelectedServers.SelectedIndex = $index 
     $Menu2.Show($inputboxSelectedServers, $e.X, $e.Y) 
    } 
}) 
関連する問題