2010-07-26 5 views
3

lors de la définition du selectionMode listbox à multiextended J'observé trois façons de sélectionner des éléments:listbox selectionMode = multiextended comment se débarrasser de la sélection d'éléments avec MouseKey vers le bas

  1. appuyant sur la touche de la souris tout en maintenant touche shift
  2. appuyant sur la souris touche tout en maintenant la touche ctrl
  3. appuyant sur la touche de la souris tout en déplaçant la souris sur un objet non sélectionné

1 et 2. est exactement le comportement que je veux, mais je ne » wa nt 3. parce que plus tard, je veux réorganiser les éléments en déplaçant tous les éléments sélectionnés vers le haut et vers le bas avec la souris.

Comment se débarrasser de 3.?

J'ai besoin d'un comportement comme la liste de lecture dans Winamp. Réorganiser les éléments en faisant glisser et copier les éléments de collage

Répondre

3

La classe ListBox a deux SelectionMode. Multiple ou étendu.

En mode Multiple, vous pouvez sélectionner ou désélectionner n'importe quel élément en cliquant dessus. En mode étendu, vous devez maintenir en bas de la touche Ctrl pour sélectionner des éléments supplémentaires ou la touche Maj pour sélectionner une plage d'éléments.

La propriété juste appropriée doit être réglée.

+0

Il existe un mode multisimple et multiexted. En mode multisimple, je ne peux pas utiliser crtl et la touche Maj – tomfox66

+0

pour parler de Win Forms? mon message est à propos de WPF –

+0

Je parle de Winforms – tomfox66

1

Vous souhaitez utiliser le mode "Avancé" mais ne voulez pas de sélections de glissement de la souris, sauf si vous appuyez sur une touche de déplacement ou de contrôle. Plutôt que d'essayer de sauvegarder les fonctionnalités, vous devez ajouter des fonctionnalités. Essaye ça.

  • Définissez "KeyPreview" sur votre formulaire à "True".
  • Définissez le Mode de sélection pour votre ListBox sur "MultiSimple".

Utilisez ce code pour ajouter la possibilité de sélectionner des éléments lorsque vous appuyez sur Contrôle ou Maj.

Public Class Form1 
    Private bSelectMode As Boolean = False 

    Private Sub Form1_KeyUpOrDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown, Me.KeyUp 
     bSelectMode = e.Control OrElse e.Shift 
    End Sub 

    Private Sub ListBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseMove 
     If bSelectMode AndAlso e.Button <> Windows.Forms.MouseButtons.None Then 
      Dim selectedindex = ListBox1.IndexFromPoint(e.Location) 

      If selectedindex <> -1 Then 
       ListBox1.SelectedItems.Add(ListBox1.Items(selectedindex)) 
      End If 
     End If 
    End Sub 
End Class