ListBox SelectedItems

cs_Rfh Messages postés 3 Date d'inscription lundi 25 septembre 2006 Statut Membre Dernière intervention 12 février 2007 - 2 févr. 2007 à 05:02
cs_Rfh Messages postés 3 Date d'inscription lundi 25 septembre 2006 Statut Membre Dernière intervention 12 février 2007 - 12 févr. 2007 à 10:51
Bonjour



J’ai un Listbox en selectionmode multiextended. (VB2005)<?xml:namespace prefix o ns = "urn:schemas-microsoft-com:office:office" /??>








Lorsque je sélectionne plusieurs lignes, la collection des


SelectedItems ne contient qu’un seul élement tant MouseUp n’a pas eu lieu. Or je voudrais connaître l’état des lignes sélectionnées
avant que l’utilisateur ne fasse un MouseUp.







J’espère que c’est clair. Merci de votre aide






Robert

7 réponses

AnteManoclis Messages postés 154 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 6 septembre 2007
2 févr. 2007 à 20:57
Bonjour,

Tu ne peux pas utiliser le MouseDown qui survient avant le MouseUp ?

Tchô AnteManoclis
0
cs_Amazing Messages postés 35 Date d'inscription lundi 23 juin 2003 Statut Membre Dernière intervention 17 avril 2010 2
4 févr. 2007 à 21:50
Salut ,
Si tu met ce code dans l'evement 'ListBox1_MouseUp' ,cela peut t'aider ?







Dim ListeObjetSelectionne
As ListBox.SelectedObjectCollection =
Me.ListBox1.SelectedItems

For
Each TmpObj
As
Object
In ListeObjetSelectionne

Dim TexteSelectionné
As
String =
CType(TmpObj,
String)

Next
Cordialement
Amazing
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
4 févr. 2007 à 22:32
Je vois bien l'acrobatie que tu veux faire, rfh...


Je ne sais pas à quoi elle va servir, mais...


Si tu es capable de transposer un tout petit code de VB6 vers VB.Net, je te la fais en moins de deux...


Tu dis...

> Amazing > : il ne veut précisément pas attendre le Mouse-Up pour savoir !
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
5 févr. 2007 à 08:59
Voilà pour VB6 (à transposer donc en VB.Net)

Sur une Form avec une listbox multiextended. nimmée List1 et un label nommé Label1 :

Private debut As Integer, fin As Integer

Private Sub Form_Activate()
  For I = 0 To 30
    List1.AddItem I & "a"  ' j'en remplis une pour que tu puisses voir
  Next
End Sub


Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  If Button = 1 Then
    debut = List1.ListIndex
    Label1.Caption = "de " & debut
  End If
End Sub


Private Sub List1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
  If Button = 1 Then
    fin = List1.ListIndex
    Label1.Caption = "de " & debut & " à " & fin & " inclus"
  End If
End Sub


 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Rfh Messages postés 3 Date d'inscription lundi 25 septembre 2006 Statut Membre Dernière intervention 12 février 2007
8 févr. 2007 à 06:53
Bonjour, (après quelques jours d'absence). J'ai fait la transposition de ta proposition en VB Net.
Et bien la réponse est toujours du genre "de 8 à 8 inclus, soit 1 indices sélectionnés"
Tant que l'évènement MouseUp n'a pas eu lieu il n'y a qu'un seul indice connu dans list1.selectedindices.
Mon acrobatie consiste à demander un DoDragDrop avant MouseUp...Mais alors je ne connais pas tous les indices sélectionnés.

Provisoirement j'ai repassé le listbox en mode MultiSimple au lieu de MultiExtended.

Si tu as une autre idée...
Merci



Public





Class

Form1





Private
debut

As



Integer
, fin

As



Integer






Public



Sub



New
()


' Cet appel est requis par le Concepteur Windows Form.

InitializeComponent()







' Ajoutez une initialisation quelconque après l'appel InitializeComponent().






For
I

As
Int32 = 0

To
30List1.Items.Add(I &


"a"
)

' j'en remplis une pour que tu puisses voir






Next






End



Sub






Private



Sub
List1_MouseDown(

ByVal
sender

As



Object
,

ByVal
e

As
System.Windows.Forms.MouseEventArgs)

Handles
List1.MouseDown


If
e.Button = Windows.Forms.MouseButtons.Left

Then

debut = List1.SelectedIndex


Label1.Text =




"de "
& debut


End



If






End



Sub






Private



Sub
List1_MouseMove(

ByVal
sender

As



Object
,

ByVal
e

As
System.Windows.Forms.MouseEventArgs)

Handles
List1.MouseMove


If
e.Button = Windows.Forms.MouseButtons.Left

Then

fin = List1.SelectedIndex


Label1.Text =




"de "
& debut &

" à "
& fin &

" inclus, soit "
& List1.SelectedIndices.Count &

" indices sélectionnés"






End



If






End



Sub 

End




Class





Robert
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
8 févr. 2007 à 08:22
          Bonjour :

                      2 causes possibles :

1) ta transposition en VB.net n'est pas exacte
ou
2) VB.Net ne réagit pas, aux événements sourus, comme VB

Ne connaissant pas VB.Net, je ne puis aller plus loin.
0
cs_Rfh Messages postés 3 Date d'inscription lundi 25 septembre 2006 Statut Membre Dernière intervention 12 février 2007
12 févr. 2007 à 10:51
Merci, quand même. A+

Robert
0
Rejoignez-nous