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

Windows Forms Discussion :

[VB.NET 2003] Simuler un clic de souris


Sujet :

Windows Forms

  1. #1
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut [VB.NET 2003] Simuler un clic de souris
    Bonjour tout le monde,

    Mon problème du jour est simple.

    J'ai un contrôle DataGrid auquel j'ai lié un contrôle ContextMenu.

    Je voudrais que lorsque je fais un clic droit sur le DataGrid, cela fasse aussi comme si j'avais fait un clic gauche au même endroit (histoire de sélectionner le record correspondant du DataGrid).

    J'suis un peu perdu. J'arrive à récupérer sans problème les coordonnées du curseur de la souris et même pas le déplacer mais pas à simuler le clic.

    Help ^^.

    Merci d'avance.

    Griftou.

  2. #2
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Tu veux dire que tu veux sélectionner la ligne sur lequel le mec à fait un clique droit pour ouvrir le contextMenu ?
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  3. #3
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Oui c'est exactement ça.

    Mais j'crois que j'suis sur le point de trouver la solution via la méthode HitTest.

    J'vous dis quoi dès que j'reviens des chiottes ^^

    Griftou.

  4. #4
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    C'est pas difficile, lorsque on a fait un clique droit, tu récupères la ligne puis tu lui dis de sélectionner la ligne correspondante (je ne connaispas bien le DataGrid mais avec une Listbox ou ListView ca marche très bien)
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  5. #5
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    En fait effectivement c'est pas si simple car l'event MouseClick n'intercepte que le clique gauche et pas le droit
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  6. #6
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    En effet mais dans le MouseDown, ça marche.

    Sauf que je sais pas pourquoi, mais dans l'objet HitTestInfo, le numéro de colonne est bien le bon mais par contre pour la ligne, j'dois faire -9. J'me demande bien pourquoi il démarre à 8 pour le header et pas à 0 ou qqch du genre.

    Enfin voilà, j'copie le code final dès que ça tourne convenablement.

    Griftou.

  7. #7
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Bon, j'ai quand même un stûût.

    J'ai écris ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub dgClient_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles dgClient.MouseDown
            If e.Button = MouseButtons.Right Then
                If Not hti Is Nothing AndAlso hti.Row - 9 >= 0 Then
                    dgClient.UnSelect(hti.Row - 9)
                End If
                hti = dgClient.HitTest(PointToClient(Cursor.Position))
                If hti.Row - 9 >= 0 Then
                    dgClient.Select(hti.Row - 9)
                End If
            End If
        End Sub
    A première, ça fonctionne nickel sauf que ça ne marche que sur la partie supérieur du DataGrid. On dirait qu'une fois que la souris se trouve dans la moitié inférieur du contrôle, ça ne fonctionne plus. En effet, à partir de là, la méthode HitTest renvoie -1 pour Row donc ça pose un léger problème...

    Vivement qu'on passe à VS2005...

    Griftou.

    EDIT :

    Je remarque qu'en fait, y a le même problème pour chaque ligne ! Si je clique dans la partie supérieur de la ligne, ma procédure sélectionne bien la ligne où le clic à eu lieu. Si je clique dans la moitié inférieur de la ligne, la procédure sélectionne la ligne suivante ! Bien sûr, je n'ai pu constater cela que sur la moitié supérieur du DataGrid.

    Quelqu'un aurait une idée ?

  8. #8
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Personne n'a une idée du pourquoi ?

    Griftou.

  9. #9
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Bon, apparemment, il s'agissait d'une mauvaise utilisation de ma part.

    Avec le code suivant, ça fonctionne nickel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        Private Sub dgClient_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles dgClient.MouseDown
            If e.Button = MouseButtons.Right Then
                If Not hti Is Nothing AndAlso hti.Row >= 0 Then
                    dgClient.UnSelect(hti.Row)
                End If
                hti = dgClient.HitTest(e.X, e.Y)
                If hti.Row >= 0 Then
                    dgClient.Select(hti.Row)
                End If
            End If
        End Sub
    Griftou.

  10. #10
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Merci pour la réponse.
    Pense au tag
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

Discussions similaires

  1. [Lazarus] [Windows] Simuler un clic de souris
    Par phobik dans le forum Lazarus
    Réponses: 5
    Dernier message: 28/09/2014, 21h16
  2. Simuler un clic de souris
    Par ionah dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 04/06/2013, 23h14
  3. [Lazarus] [Linux] Simuler un clic de souris
    Par merovingien59 dans le forum Lazarus
    Réponses: 1
    Dernier message: 30/12/2011, 11h06
  4. Simuler un clic de souris sur fenêtre réduite
    Par Costello dans le forum Delphi
    Réponses: 1
    Dernier message: 31/03/2007, 00h25
  5. Simuler un clic de souris
    Par kabikou dans le forum Access
    Réponses: 1
    Dernier message: 28/09/2005, 13h43

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