Menu sur le texte d'un DataGridView [Résolu]

MicDundee 375 Messages postés mardi 1 juillet 2003Date d'inscription 5 juin 2018 Dernière intervention - 27 août 2010 à 20:57 - Dernière réponse : NSUADI 540 Messages postés mardi 4 août 2009Date d'inscription 1 février 2013 Dernière intervention
- 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
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
MicDundee 375 Messages postés mardi 1 juillet 2003Date d'inscription 5 juin 2018 Dernière intervention - 27 août 2010 à 21:29
3
Merci
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 !

Merci MicDundee 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de MicDundee
MicDundee 375 Messages postés mardi 1 juillet 2003Date d'inscription 5 juin 2018 Dernière intervention - 27 août 2010 à 23:35
0
Merci
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
Commenter la réponse de MicDundee
MicDundee 375 Messages postés mardi 1 juillet 2003Date d'inscription 5 juin 2018 Dernière intervention - 28 août 2010 à 02:59
0
Merci
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.
Commenter la réponse de MicDundee
MicDundee 375 Messages postés mardi 1 juillet 2003Date d'inscription 5 juin 2018 Dernière intervention - 28 août 2010 à 03:18
0
Merci
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)
Commenter la réponse de MicDundee
NSUADI 540 Messages postés mardi 4 août 2009Date d'inscription 1 février 2013 Dernière intervention - 28 août 2010 à 20:26
0
Merci
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
Commenter la réponse de NSUADI
MicDundee 375 Messages postés mardi 1 juillet 2003Date d'inscription 5 juin 2018 Dernière intervention - 28 août 2010 à 20:37
0
Merci
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.
Commenter la réponse de MicDundee
MicDundee 375 Messages postés mardi 1 juillet 2003Date d'inscription 5 juin 2018 Dernière intervention - 28 août 2010 à 20:38
0
Merci
à trrasféfer = à transférer
J'ai trébuché sur les touches.
Commenter la réponse de MicDundee
NSUADI 540 Messages postés mardi 4 août 2009Date d'inscription 1 février 2013 Dernière intervention - 28 août 2010 à 20:57
0
Merci
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
Commenter la réponse de NSUADI

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.