Richtextbox et contenu [Résolu]

Karibot 89 Messages postés mardi 19 janvier 2010Date d'inscription 21 juin 2016 Dernière intervention - 2 nov. 2010 à 16:59 - Dernière réponse : SpiderGon 12 Messages postés mercredi 29 août 2007Date d'inscription 3 novembre 2010 Dernière intervention
- 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
SpiderGon 12 Messages postés mercredi 29 août 2007Date d'inscription 3 novembre 2010 Dernière intervention - 2 nov. 2010 à 19:40
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 118 internautes ce mois-ci

Commenter la réponse de SpiderGon
Meilleure réponse
SpiderGon 12 Messages postés mercredi 29 août 2007Date d'inscription 3 novembre 2010 Dernière intervention - 3 nov. 2010 à 22:44
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 118 internautes ce mois-ci

Commenter la réponse de SpiderGon
SpiderGon 12 Messages postés mercredi 29 août 2007Date d'inscription 3 novembre 2010 Dernière intervention - 2 nov. 2010 à 18:22
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
Karibot 89 Messages postés mardi 19 janvier 2010Date d'inscription 21 juin 2016 Dernière intervention - 2 nov. 2010 à 18:43
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
Karibot 89 Messages postés mardi 19 janvier 2010Date d'inscription 21 juin 2016 Dernière intervention - 2 nov. 2010 à 21:00
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
SpiderGon 12 Messages postés mercredi 29 août 2007Date d'inscription 3 novembre 2010 Dernière intervention - 2 nov. 2010 à 21:40
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
Karibot 89 Messages postés mardi 19 janvier 2010Date d'inscription 21 juin 2016 Dernière intervention - 2 nov. 2010 à 22:32
0
Merci
oui je l'ai bien ajouté en mode design...

je ne sais pas ou je merde...
Commenter la réponse de Karibot
SpiderGon 12 Messages postés mercredi 29 août 2007Date d'inscription 3 novembre 2010 Dernière intervention - 2 nov. 2010 à 22:41
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
Karibot 89 Messages postés mardi 19 janvier 2010Date d'inscription 21 juin 2016 Dernière intervention - 2 nov. 2010 à 22:59
0
Merci
yes, ça fonctionne, merci beaucoup!
Commenter la réponse de Karibot
SpiderGon 12 Messages postés mercredi 29 août 2007Date d'inscription 3 novembre 2010 Dernière intervention - 2 nov. 2010 à 23:09
0
Merci
you're welcome !
Commenter la réponse de SpiderGon
Karibot 89 Messages postés mardi 19 janvier 2010Date d'inscription 21 juin 2016 Dernière intervention - 3 nov. 2010 à 15:40
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
SpiderGon 12 Messages postés mercredi 29 août 2007Date d'inscription 3 novembre 2010 Dernière intervention - 3 nov. 2010 à 19:54
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
SpiderGon 12 Messages postés mercredi 29 août 2007Date d'inscription 3 novembre 2010 Dernière intervention - 3 nov. 2010 à 20:06
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
Karibot 89 Messages postés mardi 19 janvier 2010Date d'inscription 21 juin 2016 Dernière intervention - 3 nov. 2010 à 22:13
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
Karibot 89 Messages postés mardi 19 janvier 2010Date d'inscription 21 juin 2016 Dernière intervention - 3 nov. 2010 à 22:48
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
SpiderGon 12 Messages postés mercredi 29 août 2007Date d'inscription 3 novembre 2010 Dernière intervention - 3 nov. 2010 à 22:52
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.