J'ai un trou de mémoire (click gauche, click droit)
Bonjour à tous,
J'ai une question bête, je suis occupé avec un programme.
J'ai une zone de liste et je voudrais que lorsque je choisi un élément de la liste avec un click gauche il se passe une action et avec un click droit une autre action.
J'ai un trou de mémoire, plus moyen de me rapeller comment est la syntaxe de cet événement.
J'ai essayé
Dans l'événement mouse down de la zone de liste
Code:
1 2 3 4 5 6
|
if button = 2 (bouton droit) then.....
end if
if button = 1 (bouton gauche) then....
end if |
plus moyen de me rapeller.
Quelqu'un peu-t-il m'aider ?
Ce serait sympa.
C'est vraiment bête d'être bloqué à cause de cela
Ca marche, mais il reste un problème
Tout d'abords merci pour votre aide
Comme conseillé, j'ai fait :
Il reste un problème, le programme ne tient pas compte des données que j'ai sélectionné par un click droit.
Code:
1 2 3 4 5 6
|
Private Sub lsthist_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles lsthist.MouseDown
If e.Button = MouseButtons.Left Then MsgBox("Vous avez appuyé sur le bouton gauche" & Chr(10) & Chr(32) & "Le contenu de la liste est" & Chr(10) & lsthist.SelectedItem) )
If e.Button = MouseButtons.Right Then MsgBox("Vous avez appuyé sur le bouton droit" & Chr(10) & Chr(32) & "Le contenu de la liste est" & Chr(10) & lsthist.SelectedItem) |
Quand je fait le code qui précède:
J'obtiens avec un click gauche
Vous avez appuyé sur le bouton gauche
Le contenu est :
10/12/2008 5000 - 2000 = 3000 Paiement par bancontact
Avec un click droit
j'obtiens:
Vous avez apputé sur le bouton droit
le contenu est :
et puis plus rien ou la sélection précédente, celle du bouton gauche
Or moi ce qui m'intéresse c'est
si je clique à gauche
j'ajoute simplement [ok] sur la remarque Paiement par bancontact
si je clique à droite
Lancement d'une forme reprenant les éléments sélectioné (par le bouton droit) dans la liste
En vue de modifié ceux ci
Or dans mon cas soit
j'ai cliqué pour la première fois avec le bouton droit et je n'ai aucune donnée
Soit j'avais cliqué avant avec le bouton gauche et cela me réaffiche ces données la à la place des données sur lesquelles j'ai cliqué par le bouton droit.
En résumé.
Tant un click gauche qu'un click droit sur la liste entraine la sélection des donnée sur lesquelle j'ai cliqué.
MAIS l'action que je fait est différents selon que j'ai cliqué à gauche ou à droite
Gauche : ajout de [ok]
Droite : lancement d'un formulaire avec les données sélectionnée
Ok ca marche, mais je n'ai pas vraiment avancé
Merci pour ta réponse.
Mais je n'arrive pas à trouver la syntaxe
J'ai fait à peu près comme tu as dit :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
'variable Just et p déclaré publique dans un module
If e.Button.ToString = "Left" Then
Just(p) = lsthist.SelectedItem
If Microsoft.VisualBasic.Left(Just(p), 4) = "[ok]" Then
Just(p) = Microsoft.VisualBasic.Right(Just(p), Len(Just(p)) - 5) else just(p)="[ok] " & just(p)
End If
If e.Button.ToString = "Right" Then
Just(p) = lsthist.selecteditem
frmmodif.show
'affichage des éléments sélectionné par le click droit
End If |
En fait l'élément sélectionné (just(p)) représente plusieur éléments concaténés que je sépare par après.
Je sépare les 2 événements car il faut que j'ai des actions différentes selon que je clique à gauche ou à droite
Le problème est que quand je clique à droite j'ai de premier abords le même résultat que si je clique à gauche (sélection dans la liste)
MAIS en plus : si j'ai cliqué à droite je dois lancer un autre formulaire qui reprend les données que j'ai sélectionnée en cliquant à droite
Je constate que quand je clique à droite j'ai en fait la sélection que j'avais quand j'ai cliqué à gauche (ou rien du tout si je n'ai pas cliqué à gauche avant) et pas celle que je devrais avoir quand j'ai cliqué à droite (c'est génant)
Je ne comprends pas bien la syntaxe de hittestinfo
Ca marche pas avec les list box
Tout d'abord merci pour l'aide que vous m'apportez, mais j'y arrive pas.
J'ai déjà essayé cela
Mais cela ne marche pas avec les listbox
J'ai plein d'erreur
A la limite cliquer d'abord à gauche et puis à droite pourquoi pas
J'ai déjà esayé cela aussi
Code:
1 2 3 4 5 6 7 8 9
|
If e.Button.ToString = "Left" Then
MsgBox("Vous avez appuyé sur le bouton gauche" & Chr(10) & Chr(32) & "Le contenu de la liste est" & Chr(10) & lsthist.SelectedItem)
End If
If e.Button.ToString = "Right" Then
MsgBox("Vous avez appuyé sur le bouton droit après avoir sélectionné avec le bouton gauche" & Chr(10) & Chr(32) & "Le contenu de la liste est" & Chr(10) & lsthist.SelectedItem)
End If |
Le code ci dessus est simplement pour tester avant d'aller plus loin dans mon
programme.
Le plus important s'est d'avoir 2 informations après un click sur la liste
1 la ligne de la liste qui a été sélectionnée
2 si j'ai cliqué à gauche ou à droite
voici ce qui ce passe :
exemple de liste
alfred
Gérard
Michel
Paul
Dominique
Je clique à gauche sur Michel : "Michel" est sélectionné
Je clique une deuxème fois mais à droite : "Michel" est sélectionné
Je fais un autre choix à gauche Paul : "Michel" est sélectionné (choix précédent)
Je fais un click à droite j'obtiens "Paul" (il y a en quelque sorte un décallage)
J'ai essayé de faire 'lsthist.ClearSelected()' j'ai essayé au quatre place possible
1 avant les 2 if : je n'ai plus de sélection du tout
2 dans le premier if :après le click droit je n'ai plus de sélection
3 dans le deuxième if : click gauche ok
: click droit ok
: une nouvelle sélection à gauche erreur
Une exception non gérée du type 'System.IndexOutOfRangeException' s'est produite dans system.windows.forms.dll
Informations supplémentaires*: L'index se trouve en dehors des limites du tableau.
4 après les deux conditions if :click gauche ok
:click droit plus rien
: une autre sélection click gauche erreur
Une exception non gérée du type 'System.IndexOutOfRangeException' s'est produite dans system.windows.forms.dll
Informations supplémentaires : L'index se trouve en dehors des limites du tableau.
Par conséquent : d'après moi je dois vider la sélection de la liste un moment donné mais quand ????