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 :

[c#]tabControl et richtextbox


Sujet :

Windows Forms

  1. #1
    Membre confirmé Avatar de transistor49
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 184
    Par défaut [c#]tabControl et richtextbox
    Bonjour, j'essaie de développerunediteur de texte avec des onglets.
    Je peut créerun onglet, avec le richtextbox dedans,ouvrir un fichier dans un nouvel onglet,mais mon probleme est de sauvegarder ce qui a été saisie, je ne sauvegarde quecequ'il y a dans le premier onglet, je n'arrive pas a sauvegarder ce qu'il y a dans les onglets suivants.
    voila moncode de création d'onglet:
    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
    private void NewTab(string page,string titre)
            {
                tabIndex++;
                TabPage tbPage = new TabPage(titre);
                RichTextBox TbTexteNew = new RichTextBox();
                TbTexteNew.Text = page;
                TbTexteNew.TabIndex = tabIndex;
                TCTexte.Controls.Add(tbPage);
                tbPage.Controls.Add(TbTexteNew);
                TCTexte.SelectedIndex=tabIndex;
                TCTexte.TabIndex = tabIndex;
                int height = FHelpdev.ActiveForm.Size.Height;
                int width = FHelpdev.ActiveForm.Size.Width;
                TbTexteNew.Size = new System.Drawing.Size(width - 17, height - 120);
            }
    Je pense que c'est acausedu nom du rich textbox, il mefaudrait pouvoir lui attribuer un numérosuivant le numéro de l'onglet, ou quelque chose comme ça, est-ce que quelqu'un peut m'aider?

  2. #2
    Membre confirmé Avatar de transistor49
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 184
    Par défaut
    Bon en fait je crois que mon probleme vien de la création de la zone de texte. Mais je ne voi pas comment faire pour créer un onlet, et que automatqiuement il créé une zone de texte distinct des autres!

  3. #3
    Membre confirmé Avatar de transistor49
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 184
    Par défaut
    J'ai l'impression que mon problème n'inspire personne!!!
    J'ai essayer de contourner le probleme, en créant un a un les onglet avec leur zones texte mais c'est limité et non optimiser, donc c'est pas propre!

  4. #4
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 60
    Par défaut
    j'ai pas bien compris tn prb mais en tout cas pour le RichTextBox

    private void NewTab(string page,string titre)
    {
    tabIndex++;
    TabPage tbPage = new TabPage(titre);
    RichTextBox TbTexteNew = new RichTextBox();
    TbTexteNew.Text = page;
    TbTexteNew.TabIndex = tabIndex;
    TbTexteNew.Name=TbTexteNew + tabIndex.ToString();
    ...
    }

  5. #5
    Membre confirmé Avatar de transistor49
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 184
    Par défaut
    et de cette façon, ça me créé des richtextbox distinct?

  6. #6
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 60
    Par défaut
    Tu pourra ensuite faire commen ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for (int i=0;i<TabControl.TabPages.Count;i++)
                {
                    TextBackUp=((RichTextBox)tab.Controls["TbTexteNew" +   i.ToString()]).Text;
                    ...
                }

  7. #7
    Membre confirmé Avatar de transistor49
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 184
    Par défaut
    Citation Envoyé par amin001
    Tu pourra ensuite faire commen ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for (int i=0;i<TabControl.TabPages.Count;i++)
                {
                    TextBackUp=((RichTextBox)tab.Controls["TbTexteNew" +   i.ToString()]).Text;
                    ...
                }
    Je te remercie pour ton code, tu m'a beaucoup aider a résoudre mon probleme, mais ce que tu m'a donner pour sauvegarder, ne fonctionne pas!
    Il va directement dans mon catch, il n'a pas l'aire de récupérer la valeur.
    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
    if (SFDSave.ShowDialog() == DialogResult.OK)
                {
                    // on récupère le nom du fichier
                    nomFichier = SFDSave.FileName;
                    StreamWriter fichier = null;
                    try
                    {
                        int index = TCTexte.SelectedIndex;
                        // on ouvre le fichier en écriture
                        fichier = new StreamWriter(nomFichier);
                        index--;
                        // on écrit le texte dedans
                        string backup = ((RichTextBox)tbPage.Controls["TbTexteNew" + index.ToString()]).Text;
                        fichier.Write(backup);
                    }
                    catch (Exception ex)
                    {
                        // problème
                        MessageBox.Show("Problème à l'écriture du fichier (" +
                        ex.Message + ")", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }

  8. #8
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 60
    Par défaut
    ca vient d'ou cet "index"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string backup = ((RichTextBox)tbPage.Controls["TbTexteNew" + index.ToString()]).Text;

  9. #9
    Membre confirmé Avatar de transistor49
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 184
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int index = TCTexte.SelectedIndex;
    C'est ce qui me permety de déterminer quelle page on veut sauvegarder

  10. #10
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 60
    Par défaut
    oui j'ai bien vue mais c'est quoi ce :
    c'est Le TabConbtrol ??

  11. #11
    Membre confirmé Avatar de transistor49
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 184
    Par défaut
    oui

  12. #12
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 60
    Par défaut
    tu peut me montrer l'exception !

  13. #13
    Membre confirmé Avatar de transistor49
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 184
    Par défaut
    voila se que l'exception m'indique:
    int index = TCTexte.SelectedIndex;

  14. #14
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 60
    Par défaut
    exuse moi :
    j'ai oublié les cotes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     private void NewTab(string page,string titre)
            {
    ...
                TbTexteNew.Name="TbTexteNew" + tabIndex.ToString();
                ...
    }

  15. #15
    Membre confirmé Avatar de transistor49
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 184
    Par défaut
    ben j'avais vu ton oublie, et je les ai rajouter, attend, je te met la ou j'en suit:
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
            private void NewTab(string page,string titre)
            {
                int height = FHelpdev.ActiveForm.Size.Height;
                int width = FHelpdev.ActiveForm.Size.Width;
                tabIndexNbre = TCTexte.TabCount;
                //tabIndexNbre++;
                TabPage tbPage = new TabPage(titre);
                //tbPage.Name = tbPage + tabIndexNbre.ToString();
                TCTexte.Controls.Add(tbPage);
                RichTextBox TbTexteNew = new RichTextBox();
                TbTexteNew.Text = page;
                TbTexteNew.TabIndex = tabIndexNbre;
                TbTexteNew.Name = "TbTexteNew" + tabIndexNbre.ToString();
                tbPage.Controls.Add(TbTexteNew);
                TCTexte.SelectedIndex = tabIndexNbre;
                TCTexte.TabIndex = tabIndexNbre;
                TbTexteNew.Size = new System.Drawing.Size(width - 17, height - 120);
                CountTab();
            }
     
            private void SaveAs()
            {
                SFDSave.InitialDirectory = Application.ExecutablePath;
                SFDSave.Filter = "Fichiers texte (*.txt)|*.txt|Tous les fichiers (*.*)|*.*";
                SFDSave.FilterIndex = 0;
                // on affiche la boîte de dialogue et on récupère son résultat
                if (SFDSave.ShowDialog() == DialogResult.OK)
                {
                    // on récupère le nom du fichier
                    nomFichier = SFDSave.FileName;
                    StreamWriter fichier = null;
                    try
                    {
                        int index = TCTexte.SelectedIndex;
                        // on ouvre le fichier en écriture
                        fichier = new StreamWriter(nomFichier);
                        index++;
                        // on écrit le texte dedans
                        string backup = ((RichTextBox)tbPage.Controls["TbTexteNew" + index.ToString()]).Text;
                        fichier.Write(backup);
                    }
                    catch (Exception ex)
                    {
                        // problème
                        MessageBox.Show("Problème à l'écriture du fichier (" +
                        ex.Message + ")", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                    finally
                    {
                        // on ferme le fichier
                        try { fichier.Close(); }
                        catch (Exception) { }
                        string[] nameFileTableau = nomFichier.Split('\\');
                        int nbreTxt = nameFileTableau.Length;
                        TCTexte.SelectedTab.Text = nameFileTableau[nbreTxt-1];
                    }//finally
                    setNameFile(nomFichier);
                }//if
            }

  16. #16
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 60
    Par défaut
    alors l'exception ???

  17. #17
    Membre confirmé Avatar de transistor49
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 184
    Par défaut
    s'cuse j'avais pas vue que le copier coller n'avait pas fonctionné
    voila se que l'exception m'indique:
    La référence d'objet n'est pas définie à une instance d'un objet.

  18. #18
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 60
    Par défaut
    je vois desolé j'avait oublié : essaye ça :
    string backup = ((RichTextBox)tbPage.TabePages[index].Controls["TbTexteNew" + index.ToString()]).Text;

  19. #19
    Membre confirmé Avatar de transistor49
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 184
    Par défaut
    tbPage est deja de type TabePages.
    J'ai quand meme essayer, mais tjrs la meme erreur.
    j'ai aussi essayé avec ça:
    TCTexte.TabPages

  20. #20
    Membre confirmé Avatar de transistor49
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 184
    Par défaut
    bon,
    j'en suis rendu a ce point la. J'ai changé la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    backup = ((RichTextBox)tbPage.Controls.Find("TbTexteNew" + index.ToString(), true)[0]).Text;
    sa compile mais çàa me génere une erreur :
    L'index se trouve en dehors des limites du tableau.
    Help !!!

Discussions similaires

  1. Réponses: 25
    Dernier message: 27/03/2009, 18h10
  2. [Kylix] Utilisation du TabControl
    Par arnolanf dans le forum EDI
    Réponses: 1
    Dernier message: 06/05/2004, 15h08
  3. [VB.NET] Couleurs des onglets d'un TabControl
    Par ineznia dans le forum Windows Forms
    Réponses: 6
    Dernier message: 09/04/2004, 13h18
  4. [VB6] Ecrire à un endroit précis d'un richtextbox
    Par STG dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 26/11/2002, 14h35
  5. [VB6] [RichTextBox] Aller en bas
    Par fea dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 22/10/2002, 11h24

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