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] Contextmenu sur une DataGrid


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 15
    Points : 16
    Points
    16
    Par défaut [VB.NET] Contextmenu sur une DataGrid
    Bonjour tout le monde,

    J'ai mis sur une DataGrid un ContextMenu.
    Lorsque fait un clic droit sur une de mes lignes, j'aimerai afficher dans un des MenuItem un élément de la ligne sélectionné:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MenuItem2.Text = "Modifier " & DataGrid2.Item(DataGrid2.CurrentRowIndex, 0)
    Mon problème c'est que j'aimerais que le clic droit sélectionne la ligne sur laquelle le clic droit a été fait, car pour l'instant pour faire mon affichage correctement, je suis obligé de faire un clic gauche (je sélectionne la ligne) puis un clic droit.

    Je vous remercie et espère avoir été suffisamment clair.

    Pierre

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 15
    Points : 16
    Points
    16
    Par défaut
    Bon bein si ca en intéresse quelques uns j'ai trouvé la solution.
    J'ai créé une fonction qui se déplace dans la datagrid en fonction de l'endroit où vous avez cliqué.
    Il suffit de mettre l'appel de cette fonction dans le DatGrid1_MouseDown.
    J'ai mis pas mal de commentaire, ça pourra vous aider

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Public Sub DeplaceDG(ByVal DG As System.Windows.Forms.DataGrid, ByVal ordonnée As Integer)
            Dim LYRow As Integer 'pm - l'ordonnée de la ligne sélectionnée
            'Dim LDeplacement As Integer 'pm - le nombre de lignes que je dois sauter pour atteindre la bonne ligne
            Dim LIndexRow As Integer 'pm - la ligne en cours
     
            'pm - on sauvegarde la ligne en cours afin de travailler avec la variable 
            'et non pas se déplacer en direct
            LIndexRow = DG.CurrentRowIndex
     
            'pm - l'ordonnée de la ligne selectionné
            LYRow = (DG.GetCellBounds(LIndexRow, 0).Y)
     
            'pm - si on clic sur une ligne situé en dessous de la ligne selectionnée
            If ordonnée > LYRow Then
     
                'pm - on se déplace dans la DataGrid tant qu'on n'est pas sur la bonne ligne
                While ordonnée > LYRow And LIndexRow < YNbUsers - 1
                    LIndexRow = LIndexRow + 1
                    LYRow = (DG.GetCellBounds(LIndexRow, 0).Y)
                End While
     
                'pm - si c'est la dernière ligne sur laquelle on a cliqué
                If ordonnée < LYRow Then
                    LIndexRow = LIndexRow - 1
                End If
     
                'pm - si on clic sur une ligne situé au dessus de la ligne en cours
            Else
                'pm - si c'est la dernière ligne sur laquelle on a cliqué
                While ordonnée < LYRow And LIndexRow > 0
                    LIndexRow = LIndexRow - 1
                    LYRow = (DG.GetCellBounds(LIndexRow, 0).Y)
                End While
            End If
     
            'pm - on se place sur la bonne ligne
            DG.CurrentRowIndex = LIndexRow
     
        End Sub
    Appel de la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub DataGrid1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGrid2.MouseDown
     
         DeplaceDG(DataGrid1, e.Y)
     
    End Sub

  3. #3
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par sinoo
    Appel de la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub DataGrid1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGrid2.MouseDown
     
         DeplaceDG(DataGrid1, e.Y)
     
    End Sub
    Mmmh.. Ici cela s'applique à tous les clicks ce n'est pas spécifique au click droit
    Sinon merci d'avoir livré ta résolution
    N'oublies pas le tag si c'est ok pour toi
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

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

Discussions similaires

  1. [VB.NET] Listview sur une colonne
    Par olbi dans le forum Windows Forms
    Réponses: 1
    Dernier message: 09/05/2006, 10h41
  2. [VB.NET] Click dans une Datagrid
    Par YLF dans le forum Windows Forms
    Réponses: 2
    Dernier message: 09/03/2006, 15h55
  3. [VB.NET] Probleme sur une DropDownList
    Par xG-Hannibal dans le forum ASP.NET
    Réponses: 4
    Dernier message: 10/01/2006, 11h08
  4. [VB.NET]Cliquer sur une ligne du datagrid
    Par Dnx dans le forum ASP.NET
    Réponses: 1
    Dernier message: 02/11/2005, 14h26
  5. [VB.NET] ouverture d'une DataGrid par bouton
    Par breizhou dans le forum Windows Forms
    Réponses: 9
    Dernier message: 18/04/2005, 18h08

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