[C#]sauver un richtextbox créé dans un onglet

sauver un richtextbox créé dans un onglet [C#] - C#/.NET managed - Programmation

Marsh Posté le 09-05-2006 à 20:39:10    

Bonjour, j'ai un probleme, je n'arrive pas a récupérer la valeur de mon
text box que je crée quand je créer un onglet: pourtant le code me
semble bon, et il compile aussi, mais il rentre dans mon catch, et
n'arrive pas a finir le try!
 
voila mon code:
 

Code :
  1. private void NewTab(string page,string titre)
  2.         {
  3.             int height = FHelpdev.ActiveForm.Size.Height;
  4.             int width = FHelpdev.ActiveForm.Size.Width;
  5.             tabIndexNbre = TCTexte.TabCount;
  6.             //tabIndexNbre++;
  7.             TabPage tbPage = new TabPage(titre);
  8.             //tbPage.Name = tbPage + tabIndexNbre.ToString();
  9.             TCTexte.Controls.Add(tbPage);
  10.             RichTextBox TbTexteNew = new RichTextBox();
  11.             TbTexteNew.Text = page;
  12.             TbTexteNew.TabIndex = tabIndexNbre;
  13.             TbTexteNew.Name = "TbTexteNew" + tabIndexNbre.ToString();
  14.             tbPage.Controls.Add(TbTexteNew);
  15.             TCTexte.SelectedIndex = tabIndexNbre;
  16.             TCTexte.TabIndex = tabIndexNbre;
  17.             TbTexteNew.Size = new System.Drawing.Size(width - 17, height - 120);
  18.             CountTab();
  19.         }
  20.         private void SaveAs()
  21.         {
  22.             SFDSave.InitialDirectory = Application.ExecutablePath;
  23.             SFDSave.Filter = "Fichiers texte (*.txt)|*.txt|Tous les fichiers (*.*)|*.*";
  24.             SFDSave.FilterIndex = 0;
  25.             // on affiche la boîte de dialogue et on récupère son résultat
  26.             if (SFDSave.ShowDialog() == DialogResult.OK)
  27.             {
  28.                 // on récupère le nom du fichier
  29.                 nomFichier = SFDSave.FileName;
  30.                 StreamWriter fichier = null;
  31.                 try
  32.                 {
  33.                     int index = TCTexte.SelectedIndex;
  34.                     // on ouvre le fichier en écriture
  35.                     fichier = new StreamWriter(nomFichier);
  36.                     index++;
  37.                     // on écrit le texte dedans
  38.                    string backup = ((RichTextBox)tbPage.Controls["TbTexteNew" + index.ToString()]).Text;
  39.                     fichier.Write(backup);
  40.                 }
  41.                 catch (Exception ex)
  42.                 {
  43.                     // problème
  44.                     MessageBox.Show("Problème à l'écriture du fichier (" +
  45.                     ex.Message + " )", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
  46.                     return;
  47.                 }
  48.                 finally
  49.                 {
  50.                     // on ferme le fichier
  51.                     try { fichier.Close(); }
  52.                     catch (Exception) { }
  53.                     string[] nameFileTableau = nomFichier.Split('\\');
  54.                     int nbreTxt = nameFileTableau.Length;
  55.                     TCTexte.SelectedTab.Text = nameFileTableau[nbreTxt-1];
  56.                 }//finally
  57.                 setNameFile(nomFichier);
  58.             }//if
  59.         }


En gros, c'est un editeur de texte qui s'ouvre dans dans onglet, avec création d'onglets automatique.
 mon probleme est ici:

Code :
  1. string backup = ((RichTextBox)tbPage.Controls["TbTexteNew" + index.ToString()]).Text;


Quelqu'un pourrait m'aider?


Message édité par transistor49 le 09-05-2006 à 20:49:31

---------------
transistor49
Reply

Marsh Posté le 09-05-2006 à 20:39:10   

Reply

Marsh Posté le 09-05-2006 à 20:54:04    

tu me fais rire, il déclenche une exception. D'accord, mais le message d'erreur il sert à quoi?  
Oui oui à quelque chose
 
Moi à ta place je parcourerais les controls de ton tab (dans une boucle par exemple) et tu teste sur le casting. Si ça te renvoit null c'est pas un richtext sinon ça en est un...

Reply

Marsh Posté le 09-05-2006 à 21:07:29    

voila l'exeptio, perso, je ne la trouve pas explicite :
La référence d'objet n'est pas définie à une instance d'un objet.
 
Et sachant que tout mes tabControle possede des richtext, je ne peut pas faire ta solution.
ce que j'essaie de récupérer, c'est la valeur du richt text a sauvegarder, car il peut y en avoir une infinité


---------------
transistor49
Reply

Marsh Posté le 09-05-2006 à 21:36:08    

c clair que ma solution est possible quelque soit le nombre de controles.

Reply

Marsh Posté le 09-05-2006 à 22:11:32    

et donc tu fait de cette manière?

Code :
  1. string backup = ((RichTextBox)tbPage.Controls["TbTexteNew" + index.ToString()]).Text;


parce que moi sa plante!


---------------
transistor49
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed