Problème d'exception

Signaler
Messages postés
41
Date d'inscription
lundi 19 décembre 2005
Statut
Membre
Dernière intervention
25 novembre 2008
-
Messages postés
129
Date d'inscription
jeudi 28 octobre 2004
Statut
Membre
Dernière intervention
23 mai 2009
-
Boujour/Bonsoir ,

Je développe actuellement une application affichant, suivant l'item d'une ListBox qui est survolé, un ToolTip.
Malheureusement lorsque la souris survole un autre élément de la fenêtre(, voir une autre ListBox possédant aussi un ToolTip spécifique aux items survolés) un erreur apparait.

Cette erreur est du type ArgumentOutOfRangeException, avec ceci d'indiqué :
"InvalidArgument=La valeur '-1' n'est pas valide pour 'index'.
Nom du paramètre : index "

Voici le code utilisé pour effectuer l'apparition de mes tooltip :

Private

Sub ListBoxCommandes_MouseMove(
ByVal sender
As
Object,
ByVal e
As System.Windows.Forms.MouseEventArgs)
Handles ListBoxCommandes.MouseMove

' Index de l'item sous le curseur
Dim index
As
Integer = ListBoxCommandes.IndexFromPoint(e.Location)

' Text de l'item sous le curseur
Dim text
As
String = ListBoxCommandes.Items(index)

' Graphics de la ListBox. Permet de dessiner et de mesurer la taille d'un texte
Dim graphics
As Graphics = ListBoxCommandes.CreateGraphics

' Longueur du texte en pixels
Dim width
As
Integer = graphics.MeasureString(text,
Me.Font).Width

If width > ListBoxCommandes.Width
Then
   If
text = "GenereMonstre(Nom du Monstre,CaseX,CaseY,Nombre de Monstre)"Then
      Me.ToolTipCommandes.SetToolTip(ListBoxCommandes, text & vbNewLine &
"Permet de générer sur une zone de la carte le monstre" & vbNewLine &
"voulu, et en quantité voulou. Voir aussi TueMonstre.")
      
ElseIf text =
"InputQuery('Voulez-vous dormir ici?','Oui.','Non.')"
Then
[...]
Else
      If
text = "Message('Entrez votre message ici')"Then
         Me.ToolTipCommandes.SetToolTip(ListBoxCommandes,
"Lorsque vous entrez un message le retour à la ligne" & vbNewLine &
"ce fait automatiquement, mais vous pouvez le forcer avec" & vbNewLine &
"la commande /n, à mettre dans votre message")
      
ElseIf text =
"Condition('Appuie Sur Bouton')"
Then

[...]
      EndIf
End
If
End
Sub

Merci pour l'aide que vous pourrez m'apporter.

1 réponse

Messages postés
129
Date d'inscription
jeudi 28 octobre 2004
Statut
Membre
Dernière intervention
23 mai 2009
1
Bonjour,
cela se produit quand ta listbox est vide car l'index = -1.
tu peux mettre
Dim index
AsInteger = ListBoxCommandes.IndexFromPoint(e.Location)
        If index = -1 Then Exit Sub

comme cela tu sort de la function sans casse.
Bon courage