IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

J'ai un trou de mémoire (click gauche, click droit)


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 25
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Par défaut
    Il faut traiter l'évènement mouseClick.
    Voici un exemple en C#:
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private void button1_MouseClick(object sender, System.Windows.Forms.MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left)
        {
            //blabla
        }
    }
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 25
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  4. #4
    Membre éprouvé

    Homme Profil pro
    kiné passionné de dev
    Inscrit en
    Mars 2006
    Messages
    1 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : kiné passionné de dev

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 570
    Billets dans le blog
    1
    Par défaut
    Déjà, dans le code que tu donnes, tu as une arenthèse en trop.
    De plus, pour etre sur de ne pas t'etre trompé, comme tu utilises exactement le même code pour les deux boutons, fais plutot un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub lsthist_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles lsthist.MouseDown
     
     
            MsgBox("Vous avez appuyé sur le bouton" & e.button.tostring & Chr(10) & Chr(32) & "Le contenu de la liste est" & Chr(10) & lsthist.SelectedItem)
    sinon, en ce qui concerne les traitements, je te conseillerais d'utiliser un contextmenu, ou contextmenustrip.
    Et tu utilises hittestinfo ou quelque chose du genre pour savoir quelle ligne est selectionnée.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 25
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  6. #6
    Membre éprouvé

    Homme Profil pro
    kiné passionné de dev
    Inscrit en
    Mars 2006
    Messages
    1 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : kiné passionné de dev

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 570
    Billets dans le blog
    1
    Par défaut
    Ok, je comprend en fait, quand tu cliques à droite, ta ligne ne se seletionne pas, il est là ton problème je pense, donc tu as déjà besoin de cliquer à gauche et ensuite à droite, si j'ai bien compris...

    Mais tu ne veux pas ça, jai un bout de code sous la main:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        Private Sub DataGridView1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGridView1.MouseDown
            Dim hittestinfo As DataGridView.HitTestInfo
            'on récupère la ligne au dessus de laquelle se trouve ton pointeur
            hittestinfo = DataGridView1.HitTest(e.X, e.Y)
            If e.Button = Windows.Forms.MouseButtons.Right Then
                'S'il y a bien une ligne sous ton pointeur, on la selectionne, et on fait le traitement
                If Not hittestinfo.RowIndex = -1 Then 
                    DataGridView1.CurrentCell = DataGridView1.Rows(hittestinfo.RowIndex).Cells(1)
                ' TODO: tu fais ton traitement
                End If
            End If
        End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Trou de mémoire : fonction strlen()
    Par bit_o dans le forum C
    Réponses: 3
    Dernier message: 01/05/2007, 00h20
  2. [trou de mémoire]format numérique
    Par SpaceFrog dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 05/04/2007, 13h02
  3. simuler le click gauche de la souris
    Par sundjata dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 20/12/2006, 21h55
  4. petit trou de mémoire avec CDO.Configuration envoie de mail SMTP
    Par thierry007 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 12/09/2006, 22h39
  5. [C#] Contextmenu Click gauche
    Par mbibim63 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 06/09/2006, 02h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo