Net : Listview qui intercepte pas le selected
whombat
-
lermite222 Messages postés 9042 Statut Contributeur -
lermite222 Messages postés 9042 Statut Contributeur -
Bonjour,
J'ai une listview classique avec un label et une icône cliquable. J'ai mis une messagebox pour voir ce qui se passe. Une fois sur 2, la liste intercepte l'index, une fois sur deux elle renvoie 0.
Un tableau, rangé dans l'ordre d'affichage des labels, me donne, en fonction de l'index, le texte du label en fonction d'un paramètre annexe. S'il n'y a pas d'index intercepté, bien sûr il n'y a pas de texte de label renvoyé.
Question, donc, pourquoi mon script ne fonctionne-t-il qu'une fois sur 2 ?
Mon code :
J'ai une listview classique avec un label et une icône cliquable. J'ai mis une messagebox pour voir ce qui se passe. Une fois sur 2, la liste intercepte l'index, une fois sur deux elle renvoie 0.
Un tableau, rangé dans l'ordre d'affichage des labels, me donne, en fonction de l'index, le texte du label en fonction d'un paramètre annexe. S'il n'y a pas d'index intercepté, bien sûr il n'y a pas de texte de label renvoyé.
Question, donc, pourquoi mon script ne fonctionne-t-il qu'une fois sur 2 ?
Mon code :
Private Sub ListLangues_SelectedIndexChanged(sender As System.Object, e _
AsSystem.EventArgs) Handles ListLangues.SelectedIndexChanged
Dim idx As Integer = 0
Dim i As Integer = 0
Dim NouvLang As String = String.Empty
For i = 0 To ListLangues.Items.Count - 1
If ListLangues.Items.Item(i).Selected = True Then
If SensPL = 0 Then 'mon paramètre annexe
NouvLang = TAB_LES_PAYS(i)
Else
NouvLang = TAB_LANGUES(i)
End If
idx = i
Exit For
End If
Next i
MessageBox.Show("Vous voulez vraiment changer la langue _
en " & NouvLang & ", " & " avec index : " & idx.ToString)
end sub
A voir également:
- Net : Listview qui intercepte pas le selected
- Net framework 2.0 - Télécharger - Divers Utilitaires
- Paint net - Télécharger - Dessin & Illustration
- Logo .net - Télécharger - Études & Formations
- Net framework 4.0 - Télécharger - Divers Utilitaires
- .Net runtime optimization service ✓ - Forum Windows 8 / 8.1
11 réponses
re:
Voici un code testé sur VB2010
Cdt
Lupin
Voici un code testé sur VB2010
Dim idx As Integer = 0
Dim i As Integer = 0
Dim NouvLang As String = String.Empty
For i = 0 To lbx_Sources.Items.Count - 1
If (lbx_Sources.SelectedIndex = i) Then
If SENSPL = 0 Then 'mon paramètre annexe
NouvLang = TAB_LES_PAYS(i)
Else
NouvLang = TAB_LANGUES(i)
End If
idx = i
Exit For
End If
Next i
MessageBox.Show("Vous voulez vraiment changer la langue en " & NouvLang & ", " & " avec index : " & idx.ToString)
Cdt
Lupin
Bonjour,
Essaie comme ceci :
Cdt
Lupin
Essaie comme ceci :
For i = 0 To lstObjets.Items.Count - 1 If (lstObjets.SelectedIndex = i) Then If SensPL = 0 Then NouvLang = Tables(i) Else NouvLang = Tables(i) End If idx = i Exit For End If Next i
Cdt
Lupin
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Désolé. 9a ne ne fonctionne pas. Le deboger me dit que SelectedIndex ne fait pas partie des methodes de S.W.Forms.ListView...
Mais merci pour t'être intéressé à mon cas.
Mais merci pour t'être intéressé à mon cas.
re:
Sous quel version développes-tu ?
Sous VB2008, c'est la propriété [ .Items.Item(i).Selected ] qui n'est pas reconnu !
Cdt
Lupin
Sous quel version développes-tu ?
Sous VB2008, c'est la propriété [ .Items.Item(i).Selected ] qui n'est pas reconnu !
Cdt
Lupin
Je développe (depuis 45 jours) sous VB2010.
Je pense que j'ai résolu mon problème par un tour de passe passe pas très académique mais...
En fait, il y a une fois sur deux ou l'interception du Click est à vide. Le programme attend un Click pour quitter son ancien Item puis un second (espacé) pour intercepter le nouvel Item. Je l'ai donc shunté comme suit (et ça fonctionne nickel) :
Merci de ton intérêt pour mon problème.
Je pense que j'ai résolu mon problème par un tour de passe passe pas très académique mais...
En fait, il y a une fois sur deux ou l'interception du Click est à vide. Le programme attend un Click pour quitter son ancien Item puis un second (espacé) pour intercepter le nouvel Item. Je l'ai donc shunté comme suit (et ça fonctionne nickel) :
Private Sub ListLangues_SelectedIndexChanged(sender As System.Object, e _
AsSystem.EventArgs) Handles ListLangues.SelectedIndexChanged
'les 3 lignes rajoutées :
Static Good As Integer
Good = Not Good
If Good = 0 Then Exit Sub
'et je reprends mon script
Dim idx As Integer = 0
Dim i As Integer = 0
Dim NouvLang As String = String.Empty
.........................
Merci de ton intérêt pour mon problème.
Oui, c'est nickel Lupin, et plus simple que mon script (c'est peut-être pour ça que ça fonctionne :).
Merci pour votre aide.
Très cordialement,
Whombat
Merci pour votre aide.
Très cordialement,
Whombat
re:
Je suis plutôt endormi ...
Tout ce temps là, j'ai testé sur une ListBox.
Voici le code pour une ListView :
Cdt
Lupin
Je suis plutôt endormi ...
Tout ce temps là, j'ai testé sur une ListBox.
Voici le code pour une ListView :
Dim idx As Integer = 0
Dim i As Integer = 0
Dim NouvLang As String = String.Empty
If (lvw_Sources.SelectedIndices.Count > 0) Then
For i = 0 To lvw_Sources.Items.Count - 1
If (lvw_Sources.SelectedIndices(0).Equals(i)) Then
If SensPL = 0 Then 'mon paramètre annexe
NouvLang = TAB_LES_PAYS(i)
Else
NouvLang = TAB_LANGUES(i)
End If
idx = i
Exit For
End If
Next i
MessageBox.Show("Vous voulez vraiment changer la langue en " & _
NouvLang & ", " & " avec index : " & idx.ToString)
End If
Cdt
Lupin