Richtextbox et contenu [Résolu]

Messages postés
89
Date d'inscription
mardi 19 janvier 2010
Dernière intervention
21 juin 2016
- - Dernière réponse : SpiderGon
Messages postés
12
Date d'inscription
mercredi 29 août 2007
Dernière intervention
3 novembre 2010
- 3 nov. 2010 à 22:52
bonjour,
j'ai un petit souci auquel je ne trouve pas de solution:
j'ai une form qui contient une richtextbox, jusque la tout va bien :)
mon désir c'est d'utiliser cette box pour afficher ce que j'affichais avant à l'écran (console.writeline()).
pour simplifier, avant je faisais:
for (int i=0; i<20;i++)
{
console.writeline("ligne "+i);
}

aujourd'hui j'ai une interface et j'aimerai envoyer les éléments que je souhaite afficher vers ma form sauf que je n'y arrive pas. je sais que c'est possible puisque je l'ai déja vu à l'oeuvre mais je ne sais pas comment faire.
je cherche un truc du genre
messagebox.show("toto");

ce code permet d'envoyer une information à la class Form. j'ai essayé richtextbox mais fonctionne pas :(. ce que je voulais faire c'est un truc du genre:
for (int i=0; i<20;i++)
{
richtextbox1.text = "ligne "+i;
}



avez vous une idée?
Afficher la suite 

Votre réponse

16 réponses

Meilleure réponse
Messages postés
12
Date d'inscription
mercredi 29 août 2007
Dernière intervention
3 novembre 2010
3
Merci
La richTextBox est un membre private dans la classe Form, tu ne peux pas y accéder de l'extérieur. Un moyen serait de la passer en paramètre (par valeur) dans le constructeur de ta classe qui veut y accéder.

Dans la Form:
MaClasse maClasse = new MaClasse(richTextBox);


Dans la classe:
public class MaClasse
{
   public MaClasse(RichTextBox rTBox)
   {
      for (int i = 0; i < 20; i++)
      {
         rTBox.Text += "ligne" + i + "\n";
      }
   }
}

Merci SpiderGon 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de SpiderGon
Messages postés
12
Date d'inscription
mercredi 29 août 2007
Dernière intervention
3 novembre 2010
3
Merci
Voilà :)
for (int i = 0; i < 1000; i++)
{
   rTBox.Text += "ligne" + i + "\n";
   rTBox.Refresh();

   // Auto Scroll

   rTBox.Focus();   // Donne le focus au control
   rTBox.SelectionLength = 0;  // Aucun caractère n'est sélectionné
   
   // Place le curseur à la dernière ligne :               
   rTBox.SelectionStart = (rTBox.Text.Length - 1); 
   
   // Scroll automatiquement selon la position du curseur
   //rTBox.ScrollToCaret();    // ça fonctionne pas très bien avec...

   System.Threading.Thread.Sleep(100);
}

Merci SpiderGon 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de SpiderGon
Messages postés
12
Date d'inscription
mercredi 29 août 2007
Dernière intervention
3 novembre 2010
0
Merci
Bonjour,

Dans ton code, le texte s'efface à chaque itération. Il faut donc le conserver en l'incrémentant, ajoutant en plus, un retour à la ligne :
richTextBox1.Text += "ligne" + i + "\n";
Commenter la réponse de SpiderGon
Messages postés
89
Date d'inscription
mardi 19 janvier 2010
Dernière intervention
21 juin 2016
0
Merci
Re,
ce code ne fonctionne pas parce que je ne peux pas appeler ma richTextBox1 depuis ma classe. ce champ n'est disponible que dans ma classe Form...
une autre idée?
Commenter la réponse de Karibot
Messages postés
89
Date d'inscription
mardi 19 janvier 2010
Dernière intervention
21 juin 2016
0
Merci
on se rapproche :)
j'ai fait un test mais ne reconnais pas le richtextbox, comment on le déclare?
voici mon exemple:
namespace test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Class1 maClasse = new Class1(richTextBox);
        }


    }
}


ce qui me donne cette erreur: Le nom 'richTextBox' n'existe pas dans le contexte actuel
Commenter la réponse de Karibot
Messages postés
12
Date d'inscription
mercredi 29 août 2007
Dernière intervention
3 novembre 2010
0
Merci
Tu veux le mettre où exactement ton RichTextBox, c'est pas très claire ton problème?

As-tu ajouté le richTextBox dans ton Form en mode design ??

En faisant cela, tu obtient dans Form1.Designer.cs :
private void InitializeComponent()
{
this.richTextBox1 = new System.Windows.Forms.RichTextBox();
this.SuspendLayout();
// 
// richTextBox1
// 
this.richTextBox1.Location = new System.Drawing.Point(98, 64);
this.richTextBox1.Name = "richTextBox1";
this.richTextBox1.Size = new System.Drawing.Size(217, 96);
this.richTextBox1.TabIndex = 0;
this.richTextBox1.Text = "";
// 
// Form1
// 
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(437, 266);
this.Controls.Add(this.richTextBox1);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
//...
private System.Windows.Forms.RichTextBox richTextBox1;

Ou bien, si tu veux l'ajouter à la main :

dans Form1:
System.Windows.Forms.RichTextBox richTextBox1 =
          new System.Windows.Forms.RichTextBox();
this.Controls.Add(richTextBox1);
Commenter la réponse de SpiderGon
Messages postés
89
Date d'inscription
mardi 19 janvier 2010
Dernière intervention
21 juin 2016
0
Merci
oui je l'ai bien ajouté en mode design...

je ne sais pas ou je merde...
Commenter la réponse de Karibot
Messages postés
12
Date d'inscription
mercredi 29 août 2007
Dernière intervention
3 novembre 2010
0
Merci
L'as-tu bien orthographié?
Vérifie bien le nom dans les propriétés du control
Commenter la réponse de SpiderGon
Messages postés
89
Date d'inscription
mardi 19 janvier 2010
Dernière intervention
21 juin 2016
0
Merci
yes, ça fonctionne, merci beaucoup!
Commenter la réponse de Karibot
Messages postés
12
Date d'inscription
mercredi 29 août 2007
Dernière intervention
3 novembre 2010
0
Merci
you're welcome !
Commenter la réponse de SpiderGon
Messages postés
89
Date d'inscription
mardi 19 janvier 2010
Dernière intervention
21 juin 2016
0
Merci
RE:
le truc fonctionne bien sauf qu'il m'affiche toutes les lignes d'un coup! ce que je veux c'est qu'il m'affiche les lignes au fur et à mesure qu'elles sont traitées. là ce qui se passe c'est qu'il n'y a rien qui se passe pendant un temps puis il m'affiche tout d'un coup...
tu as une idée sur comment régler ça?
Commenter la réponse de Karibot
Messages postés
12
Date d'inscription
mercredi 29 août 2007
Dernière intervention
3 novembre 2010
0
Merci
En fait, les lignes sont bien traitées au fur et à mesure, mais ça se passe à une telle vitesse qu'on ne le remarque pas !

Ce qu'il faudrait c'est ajouter un "Timer" et mettre une pause de 1 ou 2 secondes entre chaque affichage de ligne.

Je ne vois pas comment faire autrement.
Commenter la réponse de SpiderGon
Messages postés
12
Date d'inscription
mercredi 29 août 2007
Dernière intervention
3 novembre 2010
0
Merci
Une meilleur solution (Utilisation des threads) :
public class Class1
{
   public Class1(RichTextBox rTBox)
   {
      for (int i = 0; i < 20; i++)
      {
         rTBox.Text += "ligne" + i + "\n";
         rTBox.Refresh();      // Rafraîchissement du textbox

         System.Threading.Thread.Sleep(1000);    // pause de 1000ms = 1s
      }
   }
}
Commenter la réponse de SpiderGon
Messages postés
89
Date d'inscription
mardi 19 janvier 2010
Dernière intervention
21 juin 2016
0
Merci
Merci spiderGon! toujours sur le coup à ce que je vois ;-)
ça marche effectivement mais j'ai un autre souci :)
à l'affichage, j'ai les lignes qui défilent sauf que je ne vois les dernières lignes! je suis obligé de scroler la fenetre pour que je voit toutes les lignes affichée. y a t-il un truc pour que la barre de scroll de la richtextbox défile toute seule?
je ne sais pas si je suis claire ou pas. dis moi si tu as compris mon problème.
Commenter la réponse de Karibot
Messages postés
89
Date d'inscription
mardi 19 janvier 2010
Dernière intervention
21 juin 2016
0
Merci
génial mec! tu es le roi du pétrole :)
merci beaucoup tu m'a vraiment aidé.
bonne soirée et à un prochain bug :)
Commenter la réponse de Karibot
Messages postés
12
Date d'inscription
mercredi 29 août 2007
Dernière intervention
3 novembre 2010
0
Merci
lol, no problem !
Commenter la réponse de SpiderGon

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.