Menu sur le texte d'un DataGridView

Résolu
Utilisateur anonyme - 27 août 2010 à 20:57
NSUADI Messages postés 540 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 1 février 2013 - 28 août 2010 à 20:57
Est-il possible d'avoir son propre menu quand un texte est sélectionnée dans une cellule ?
DataGridView1.ContextMenuStrip = ContextMenuStrip1
Correspond à un menu sur l'objet mais sur le texte c'est le menu normal. J'ai besoin d'ajouter des actions.
Merci

8 réponses

Utilisateur anonyme
27 août 2010 à 21:29
J'ai trouvé mon bonheur.

Pour ceux qui sont dans le même caca

Private Sub DataGridView1_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
        If TypeOf e.Control Is TextBox Then
            With DirectCast(e.Control, TextBox)
                .ContextMenuStrip = ContextMenuStrip2
            End With
        End If
End Sub

ContextMenuStrip2 étant votre menu !
3
Utilisateur anonyme
27 août 2010 à 23:35
Salut !
Bon, avoir le menu c'est bien mais s'en servir sur le texte sélectionné... J'arrive pas !

Dans le With j'ai bien .SelectedText mais ça ne donne rien.

Je voudrais bien récupérer une partie du texte soit pour copier / coller ou le modifier.
Quelqu'un sait ?
Merci
0
Utilisateur anonyme
28 août 2010 à 02:59
J'ai déjà fait un monologue, je recommence !
J'ai trouvé comment géré cela. Pas simple mais je me suis basé sur un code touvé sur le web mais différent avec TextChanged. Toutefois, il m'a bien aidé.

D'abord, créer un TexteBox virtuel au début de la form pour qu'il soit disponible partout dans le formulaire.
    Dim TB As TextBox

Les explications que je donne sont le fruit de ma compréhension de la chose à 3 heures du mat. ZZZzzz

C'est dans le DataGridView1_EditingControlShowing que cela se passe. Je l'avais deviné mais... On fusionne le TB virtuel avec la cellule TB = CType(e.Control, TextBox)
Sous l'action de la souris (bouton relâché) on bascule la saisie vers l'addresse postale qu'on lui donne AddHandler TB.MouseUp, AddressOf Me.tb_TextChanged

    Private Sub DataGridView1_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
        'Menu pour l'édition de texte
        If TypeOf e.Control Is TextBox Then
            TB  = CType(e.Control, TextBox)
            AddHandler TB.MouseUp, AddressOf Me.tb_TextChanged
            With DirectCast(e.Control, TextBox)
                .ContextMenuStrip = ContextMenuStrip2
            End With
        End If
    End Sub


Voilà l'adresse :
    Private Sub tb_TextChanged(ByVal sender As Object, ByVal e As EventArgs)
        '
    End Sub

Seulement pour le Copier coller, elle ne sert que pour valider le Handler. On la laisse.

Pour mon menu Copier coller :
    Private Sub MenuEditCopier_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MenuEditCopier.Click
        'Copier
        Clipboard.Clear()
        Clipboard.SetText(TB.SelectedText, TextDataFormat.Text)
    End Sub

    Private Sub MenuEditColler_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MenuEditColler.Click
        'Coller
        TB.SelectedText = Clipboard.GetText
    End Sub

Comme vous le voyez, mon texteBox virtuel TB, est utilisé pour la sélection.
Il faut peut être mettre un RemoveHandler car je ne sais pas cela cela donnera après 1 heure de travail sur le programme.
Bon ! Au pieux !

Si quelqu'un peut apporter une correction, ce n'est pas trop tard.
0
Utilisateur anonyme
28 août 2010 à 03:18
Re !
Ca
AddHandler TB.MouseUp, AddressOf Me.tb_TextChanged


et donc ça ne servent à rien.
    Private Sub tb_TextChanged(ByVal sender As Object, ByVal e As EventArgs)
        '
    End Sub

Ils sont inutiles après quelques tests.
Juste l'histoire du TB virtuel qu'il faut garder là où je l'ai mis.
TB = CType(e.Control, TextBox)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NSUADI Messages postés 540 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 1 février 2013 2
28 août 2010 à 20:26
Bonsoir!!
j'ai suivi de près ton monologue et j'en suis venu à déduire que la ligne:
AddHandler TB.MouseUp, AddressOf Me.tb_TextChanged
ne servait à rien parce que sans çà il n'y a pas non plus de problème,la copie se fait sans problème par contre j'aimerai bien savoir à quoi sert le "AddHandler ,AddressOf "?
Ce qui compte,ce n'est pas ce qu'on a mais plutôt ce que l'on fait avec ce qu'on a...
Visual Basic .Net is the best and vb6.0
0
Utilisateur anonyme
28 août 2010 à 20:37
Salut !
Le AddHandler sert lorsque tu créé un évênnement, (clic, touche pressée, texte modifié...) repère les icônes avec un éclair, à trrasféfer l'évênement à l'adresse que tu lui donnes.
Autrement dit AddHandler TB.MouseUp, AddressOf Me.tb_TextChanged veut dire, dès que l'usager relâche le bouton, on va à Me.tb_TextChanged. C'est pour cela que c'est inutile pour récupérer le texte sélectionné. Cela peut servire a faire des actions en dehors du Private Sub DataGridView1_EditingControlShowing.
0
Utilisateur anonyme
28 août 2010 à 20:38
à trrasféfer = à transférer
J'ai trébuché sur les touches.
0
NSUADI Messages postés 540 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 1 février 2013 2
28 août 2010 à 20:57
Merci pour l'explication...
Ce qui compte,ce n'est pas ce qu'on a mais plutôt ce que l'on fait avec ce qu'on a...
Visual Basic .Net is the best and vb6.0
0
Rejoignez-nous