Une classe externe qui utilise un contrôle de ma Form1 ? [Résolu]

Messages postés
22
Date d'inscription
lundi 25 juin 2007
Statut
Membre
Dernière intervention
4 janvier 2008
- - Dernière réponse : DaFridge
Messages postés
22
Date d'inscription
lundi 25 juin 2007
Statut
Membre
Dernière intervention
4 janvier 2008
- 18 oct. 2007 à 16:17
Bonjour !

Ca fait deux jours que je cherche une solution à mon problème...

J'ai créé un formulaire Form1 sur lequel j'ai un contrôle richTextBox1 contenu dans un groupBox1.
J'ai créé une classe Journal dans un fichier Journal.cs qui doit me permettre de mettre à jour le contenu de la richTextBox1 (pour en faire un journal, histoire d'avoir des retours sur l'exécution de l'application).

public
class
Journal
{

   public
void AjouterMessage(
string message,
int type)
      {
         ...
      }
}

Mais quand je compile l'application, j'ai une erreur du style "Le nom 'richTextBox1' n'existe pas dans le contexte actuel.
Même en changeant la propriété Modifiers de TOUS mes contrôles à Public, j'ai toujours cette erreur...

Donc je voudrais savoir comment utiliser un contrôle de ma Form1 à partir d'une classe qui n'est pas dans Form1.cs ?

Merci d'avance...
Afficher la suite 

9 réponses

Meilleure réponse
Messages postés
134
Date d'inscription
dimanche 1 octobre 2006
Statut
Membre
Dernière intervention
19 mai 2008
1
3
Merci
Re,

J'ai fait quelque test, et en fait je pense savoir d'ou viens le problème. Tu es obligé de taper sur une instance de ta classe Form1 pour pouvoir accéder à ta richTextBox1. En effet, le controle richTextBox n'est pas static, puisqu'il est crée par la méthode InitComponent si tu as utilisé le designer, ou par toi même dans le code. Dans tous les cas, si tu n'instancie pas ta form impossible.

Tu dois procéder de la façon suivante : (ou du moins dans le style, après je ne sais pas ce que tu veux faire)

public

class
Journal{

      Form1 form;

      public
void InitialiseComposant()      {

            form =

new
Form1();            form.Show();

            AjouterMessage(

"it works");      }

      public
void AjouterMessage(
string message)      {

      form.richTextBox1.Text = message;

      }

}

Cordialement,

Bidou_01

Dire « Merci » 3

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

Codes Sources 197 internautes nous ont dit merci ce mois-ci

Commenter la réponse de bidou_01
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
42
3
Merci
Salut,
Pour le passage de paramètres entre classes (form), tu peux regarder ici:
http://www.csharpfr.com/codes/PASSAGE-PARAMETRES_26735.aspx

<hr />
-My Blog-

Dire « Merci » 3

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

Codes Sources 197 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Bidou
Messages postés
134
Date d'inscription
dimanche 1 octobre 2006
Statut
Membre
Dernière intervention
19 mai 2008
1
0
Merci
Bonjour,

Hum, bizarre, ta classe Form1 est bien public ? A tout hasard...

Cordialement,

Bidou_01
Commenter la réponse de bidou_01
Messages postés
22
Date d'inscription
lundi 25 juin 2007
Statut
Membre
Dernière intervention
4 janvier 2008
0
Merci
Oui.
Dans Form1.cs :

publicpartialclassForm1 :
Form
{
   public Form1()
   {
      InitializeComponent();
   }
   ...
}
Commenter la réponse de DaFridge
Messages postés
22
Date d'inscription
lundi 25 juin 2007
Statut
Membre
Dernière intervention
4 janvier 2008
0
Merci
Les espaces sont bien présents normalement. Je ne comprends pas pourquoi ils sautent lors de l'envoi de mes messages.
Commenter la réponse de DaFridge
Messages postés
22
Date d'inscription
lundi 25 juin 2007
Statut
Membre
Dernière intervention
4 janvier 2008
0
Merci
Merci pour la réponse.

Cependant je peux avoir Form (le type de données) mais pas Form1 !

Je ne peux pas faire
Form1 form;
Commenter la réponse de DaFridge
Messages postés
134
Date d'inscription
dimanche 1 octobre 2006
Statut
Membre
Dernière intervention
19 mai 2008
1
0
Merci
Hum, encore plus bizarre.

Tu es dans le même projet ? Dans le même namespace. Sinon vérifies les références de ton projets et aussi que tu as appelé les bonnes directives "using"

Cordialement,

Bidou_01
Commenter la réponse de bidou_01
Messages postés
22
Date d'inscription
lundi 25 juin 2007
Statut
Membre
Dernière intervention
4 janvier 2008
0
Merci
Quel idiot je fais. Il y avait une faute de frappe sur le namespace.
En copiant ton code à la lettre, "La génération a réussi".

Mais lors de l'exécution, j'ai une erreur "La référence d'objet n'est pas définie à une instance d'un objet." lorsque j'utilise
form.richTextBox1.Text.Length;

Pourquoi ça ?
Commenter la réponse de DaFridge
Messages postés
22
Date d'inscription
lundi 25 juin 2007
Statut
Membre
Dernière intervention
4 janvier 2008
0
Merci
Euh je suis désolé mais avec cette source je n'arrive pas à comprendre comment piloter la richTextBox1 de ma Form1 à partir de ma classe...
Je souhaite juste lire et écrire dessus. Je ne vais pas à chaque fois envoyer la longueur du texte ou le texte de ma richTextBox à ma classe ?
Commenter la réponse de DaFridge