Affectation d'une valeur sur une autre form [Résolu]

Signaler
Messages postés
8
Date d'inscription
lundi 9 février 2004
Statut
Membre
Dernière intervention
22 janvier 2008
-
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
-
Bonjour à tous,

Je suis débutant en C# et je voudrais savoir comment on affecte une valeur d'un textbox d'une form1 vers un textbox d'une form2.

J'ai essayé de faire la même chose qu'en Visual Basic mais cela ne marche pas.



Je remercie d'avance tous ceux qui m'aideront.



Dav

8 réponses

Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
20
Ils y en a qui te diront de mettre ta textbox de la form2 en public d'autres moi j'utiliserais les evenements et j'abonnerais ma textbox2 à l'evenement de validation de la une...

Si tu es débutant passe par le public, tu essaieras de comprendre les evenements / delegate ensuite.

::|The S@ib|::
MVP C#.NET
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
52
Salut,
Si la solution des events proposé par TheSaib t'intéresse, tu peux regarder cette source que j'ai faite, exprès pour les débutants : http://www.csharpfr.com/code.aspx?ID=26735

[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
20
En fait quand tu fais çà Form1 frmCre = new Form1(); tu instancies une nouvelle form1.

Pour faire ce que tu veux il faut que tu passes l'instance de Forma1 qui s'execute actuellement.

Si tu es dans un contexte MDI :

ceci devrait marcher :

((Form1)form2.MdiParent).TextBox1.Text = "troooiooio";

Si tu n'es pas dans ce cas il faut passer en paramètre de ton constructeur l'instance de ta form1

private Form1 pere;
public Form2(Form1 maform1)
{
pere = maform1;
}

::|The S@ib|::
MVP C#.NET
Messages postés
8
Date d'inscription
lundi 9 février 2004
Statut
Membre
Dernière intervention
22 janvier 2008

J'ai mis le contrôle en public donc maintenat je vois bien le contrôle dans la deuxième form.

Sauf que si je lui affecte une nouvelle valeur il ne l'affiche pas, il
laisse la valeur précédente pourtant le débogueur ne génére pas
d'erreur.



Merci pour vos réponses
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
20
Un peu de code serait la bienvenue :)

::|The S@ib|::
MVP C#.NET
Messages postés
8
Date d'inscription
lundi 9 février 2004
Statut
Membre
Dernière intervention
22 janvier 2008

Excuse moi.

Dans la form 1 j'ai déclaré le textbox en public :

...

public System.Windows.Forms.TextBox textBox1;

...



Dans la form 2 sur clik sur bouton :

private void button1_Click(object sender, System.EventArgs e)

{

Form1 frmCre = new Form1();

frmCre.textBox1.Text="bonjour";

}



Mais le problème c'est qu'après cette affectation le textbox de la form 1 n'a pas prit la valeur "bonjour".

---------------

J'espère que cela t'éclaireras.
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
20
C'est un peu normal

Form1 frmCre = new Form1();
frmCre.textBox1.Text="bonjour";

Tu crées une nouvelle instance de la classe Form1. Rajoute juste çà après:

Form1.Show();

Tu comprendras ou est ton erreur.

::|The S@ib|::
MVP C#.NET
Messages postés
8
Date d'inscription
lundi 9 février 2004
Statut
Membre
Dernière intervention
22 janvier 2008

Ok maintenant je comprends un peu mieux.

Mais j'ai un autre problème. La form 1 (c'est une MDI) est maintenant elle est ouverte 2 fois.

Comment fermer la form 1 qui n'a pas été actualisée ?

j'ai essayé : form2.MdiParent.Close();

j'ai ce message d'erreur :

-----------

Une exception non gérée du type 'System.NullReferenceException' s'est produite dans Films.exe



Informations supplémentaires : La référence d'objet n'est pas définie à une instance d'un objet.

-------

Merci de m'aider Dav