none
VB.net - DATAGRIDVIEW - touche entrée et raccourci clavier RRS feed

  • Question

  • Bonjour à tous,

    Malgré mes recherches je ne trouve pas la solution à mon problème qui est ...

    J ai un datagridview dans une form qui contient quatre colonnes - heure - acteur1 - acteur2 - dialogue

    celui ci sera utilisé par l'utilisateur pour rentrer du texte dans les cellules.

    l utilisateur doit avoir la possibilité de taper son texte dans la cellule dialogue et surtout pouvoir passer à la ligne dans la même cellule/colonne dialogue.

    Vous l aurez compris si l utilisateur utilise la touche entrée , dans la construction native du datagridview ca le fait basculer automatiquement à la ligne suivante.

    Comment pour faire en "live" pour que la cellule se comporte comme un textbox, c'est à dire que la ligne s agrandisse et que la cellule accepte le retour chariot quand l utilisateur appuie sur la touche entrée ( et surtout que cela soit visible pour l utilisateur )

    si vous pouvez m aiguiller dans une démarche à suivre

    Merci

    Cordialement

    samedi 28 janvier 2017 07:08

Réponses

Toutes les réponses

  • Bonjour et merci de votre réponse.

    j'ai bien vu le premier lien que vous me citez mais j avoue avoir bloquer ...

    j ai bien compris les différentes propriétés ( je pense à force de les potasser ) du DataGridViewTextBoxEditingControl mais j ai toujours bloqué avec la fameuse touche entrée qui me faisait basculer sur la ligne suivante.

    j'ai essayé aussi en lisant le tuto de P. Lasserre avec les Flexgrid ... trop galère pour moi et ancien...

    j ai trouvé un palliatif à mon problème.

    j ai rajouté une form avec un richtextbox.

    Sur ma première j ai déclaré en public la form2

    j ai créé un raccourci clavier sur ma datagrid qui me fait apparaître mon richtextbox (sur form2).

    dès que je quitte ma form 2, mon texte dans richtextbox apparaît sur ma cellule active

    j'ai mis DataGridViewCellStyle { } avec la propriété wrapmode à true et le tour est joué.

    Par contre je galère de nouveau car ma méthode garde en mémoire le texte entré dans la richtextbox même quand je ferme ma form2.

    je suis en train de chercher.

    je mettrais mon code "brouillon" très bientôt en ligne pour avoir l avis des fins connaisseurs

    cordialement

    mardi 31 janvier 2017 13:24
  • re bonjour

    en faisant j ai retravaille ... la simplicite il n y a que cela de vrai

    Public Class Form1
    
        Private Sub Gridacteur_CelldoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles Gridacteur.CellDoubleClick
    
            Dim i As Integer = e.RowIndex
            Dim col1 As String = Me.Gridacteur.Rows(i).Cells(0).Value
            Form2.RichTextBox1.Text = col1
            Form2.ShowDialog()
    
        End Sub
    
    End Class

    puis sur ma form2 une richtextbox et un bouton qui sert a modifier le texte sur lequel on a doublecliquer

    Public Class Form2
    
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Form1.Gridacteur.CurrentCell.Value = RichTextBox1.Text
        End Sub
    End Class

    j ai regle mon grid pour que les lignes s agrandissent automatiquement et wrap  à true

    je continue mon apprentissage ... et j ai une petit question si vous le permettez

    quand je double clique une nouvelle fois pour afficher le form2

    il garde en mémoire et donc affiche les dernieres donnees tapées.

    comment faire pour éviter cela ? .. avec dispose ?

    Merci d avance

    mardi 31 janvier 2017 15:03
  • Vous passez toujours Rows(i).Cells(0) donc toujours la même cellule à votre RTB.

    Essayez ceci:

     Private Sub datagridview1_CelldoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick
    
            Dim i As Integer = e.RowIndex
            Dim j As Integer = e.ColumnIndex
            Dim col1 As String = Me.DataGridView1.Rows(i).Cells(j).Value
            Form2.RichTextBox1.Text = col1
            Form2.ShowDialog()
    
        End Sub
    Explorez la façon de passer des informations entre Form et peut être évaluez votre interface pour son ergonomie...

    mercredi 1 février 2017 08:32
  • Bonjour et merci "encore et encore" de votre réponse

    Quel imbécile je fais ... j'avais zappé de déclarer l'index de la colonne ce que vous avez vu en un clin d'oeil.

    que voulez vous dire par " évaluez votre interface pour son ergonomie..."

    je ne vois pas plus simple pour un utilisateur que de double cliquer sur le datagrid/"champ" dialogue pour rentrer un texte avec les retours chariot apparents.

    j ai mis un raccourci clavier pour intervertir l acteur1 et l acteur2 sur la ligne suivante pour faciliter la saisie du dialogue au "créateur du sketch"

    j'ai mis une couleur différente par rapport à quel acteur parle.

    le reste j avoue , je ne vois pas trop ce que vous entendez par " évaluez ..."


    Cordialement

    vendredi 3 février 2017 05:26
  • Le DataGridView est design pour afficher des données (View) et non pas pour faire des entrées (Entry?).

    Il serait plus ergonomique d'avoir des contrôles spécifiques pour les entrées de l'utilisateur avant de faire une mise à jour du DataGridView. Par exemple votre doubleclick peut prendre la ligne et mettre les éléments dans un conteneur avec des TextBox, des ListBox, des RichTextBox, des ComboBox... Cela vous permet de complexifier l'interface sans toucher à l'affichage des résultats...

    Une des features les plus puissantes du DGV est la possibilité de le lier avec une base de données, une source de données. Gardez cela en tête lorsque que vous faite votre interface et posez vous la question "et si il y a une base derrière les infos?".

    vendredi 3 février 2017 08:34
  • Bonjour,

    On ne peut rien vous cacher ....

    ma petite appli fonctionne avec un fichier Xml (Sql et Acces non installés sur les pc ou fonctionnera cette petite appli)

    le fichier Xml est sur un disque en partage.

    Première form composée de plusieurs textbox(répercutant les différentes données extraites pour chaque élément de mon fichier xml ...  acte - acteur 1 acteur 2 dialogue commentaires ) , un listbox ( qui affiche les éléments de chaque acte )

    un bouton pour créer et/ou modifier un élément du fichier xml et cela arrive sur la form2 avec le datagridview qui est soit vierge si nouvelle "fiche à créer ou datagrid rempli avec l'élément à modifier.

    je me suis basé sur le tuto Zbiblio (facilement accessible sur Google) pour créer mon interface. (et apprendre le fonctionnement de la sérialisation soit dit en passant)

    il est vrai que j aurais pu moins me compliquer la vie en restant sur une seule form et permettre à l utilisateur de modifier directement les données via les textbox ...

    Cordialement


    • Modifié newbie974 dimanche 5 février 2017 05:26
    dimanche 5 février 2017 05:25