2017-08-11 1 views
1

J'ai une liste déroulante multiextended et quand je clique avec le bouton droit sur un élément dans la boîte je veux seulement que cet article soit choisi. Je ne peux pas changer le `SelectionMode 'de la liste, car quand je clique dessus, il doit être capable de sélectionner plusieurs éléments.Clic droit Liste multiple pour mettre en surbrillance une seule option

Voici le code je qui fonctionne lorsque la zone de liste est une seule boîte de sélection:

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

Mais je ne peux pas comprendre comment changer le bon comportement de la souris, cliquez pour sélectionner uniquement l'élément listbox la la souris a réellement frappé.

Répondre

0

Ok, donc après un moment de bricolage, l'inspiration a frappé. Tout ce que je devais faire pour avoir la liste MultiExtended n'a qu'un seul élément sélectionné sur un clic droit était de désélectionner tous les autres éléments. Dans ce code, la boucle for désélectionne tous les éléments de la zone de liste, puis la propriété SelectedIndex est définie sur l'élément sur lequel vous avez cliqué avec le bouton droit de la souris.

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