cs_benji78
Messages postés41Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention25 novembre 2008
-
16 sept. 2008 à 22:09
alosamoelle
Messages postés129Date d'inscriptionjeudi 28 octobre 2004StatutMembreDernière intervention23 mai 2009
-
16 sept. 2008 à 22:56
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
alosamoelle
Messages postés129Date d'inscriptionjeudi 28 octobre 2004StatutMembreDernière intervention23 mai 20091 16 sept. 2008 à 22:56
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