Connexion entre plusieurs forms en c#(Winforms)

Résolu
caela Messages postés 68 Date d'inscription mercredi 9 décembre 2009 Statut Membre Dernière intervention 19 avril 2012 - 14 déc. 2009 à 13:22
caela Messages postés 68 Date d'inscription mercredi 9 décembre 2009 Statut Membre Dernière intervention 19 avril 2012 - 15 déc. 2009 à 15:38
Bonjour tout le monde!
Voilà je m'initialise en c#,mon appli a pour but de faire un ecran de saisie de message.
J'utilise en fait 3 forms,
le form1 et le form2 sont des formulaires de saisies
et dans le form3 on a un aperçu intégral du message, je pensais mettre un listbox et le passer en réference dans toutes les forms puis afficher son contenu dans le form3 mais je ne sais pas comment faire et j'hésite aussi car je ne suis pas sûre que c'est la bonne méthode.
Si quemqu'un a une idée merci de me répondre.

10 réponses

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
14 déc. 2009 à 14:27
Salut

Tu peux regarder ceci.

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé ! -
3
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
15 déc. 2009 à 13:34
Ce que tu peux faire, c'est transmettre la référence à l'instance de tes 2 form lors de la création de ta form3

Un truc du genre :
Dans Form1
Form2 form2 = new Form2();
form2.referenceForm1 = this; // Soit tu fournis la référence comme ça
form2.ShowDialog();


Dans Form2
public Form1 referenceForm1 = null;
//[...]
void BoutonCreeForm3_Click(object sender, EventArgs e)
{
    Form3 form3 = new Form3(referenceForm1, this); // Soit tu la fournis par le constructeur
    form3.ShowDialog();
}


Dans Form3
public Form3(Form1 form1, Form2 form2)
{
    InitializeComponent();
    MaTextBox1.Text = form1.textBox1.Text; // textBox1 doit être public
    MaTextBox2.Text = form2.textBox2.Text; // textBox2 doit être public
}


Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé ! -
3
caela Messages postés 68 Date d'inscription mercredi 9 décembre 2009 Statut Membre Dernière intervention 19 avril 2012
14 déc. 2009 à 14:38
Merci bocoup je vais le regarder tout de suite!!
0
caela Messages postés 68 Date d'inscription mercredi 9 décembre 2009 Statut Membre Dernière intervention 19 avril 2012
15 déc. 2009 à 07:43
slt j'ai regarder le truc que tu m'as donné effectivement ça marche très bien mais je ne comprends pas trop alors (mon but est de comprendre et de maîtriser ce que je fais non seulement de finir ce truc ) je suis allée fouiller dans les autres forms et j'ai trouvé pleins de trucs intéressants mais le hic c'est que c'est pour 2 forms seulements et après on doit ouvrir le truc après.
Bon voici l'exemple:
Il y a 2 forms form1 et form2 (le but était d'afficher le contenu du textbox1 du form1 dans le textbox2 du form2)
Donc dans form1 il y aura:
{

Form Form2 = new Form2();//on aura plus besoin de parametre a spécifier

Form2.textBox2.Text = textBox1.Text;
Form2.ShowDialog();

}
dans mon cas ça devrait marcher(enfin je crois)
mais le fait est que l'aperçu est dans le form3
donc il faut que je remplisse form1 et form2 d'abord! et je ne fais de form3.show() que dans
form2 alors si quelqu'un peut m'aider à m'en sortir ce serait très sympa!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
15 déc. 2009 à 10:24
Déjà, ton code ne marchera pas :

Form Form2 new Form2();> tu crées un objet de type Form2, et tu l'enregistre en tant que Form. Ca fonctionne puisque Form2 hérite de Form.
Form2.textBox2.Text textBox1.Text;> là ça ne marchera pas : Form2 est de type Form, pas de type Form2. Or la classe Form ne contient pas de textBox2.

Form2 form2 = new Form2();
form2.textBox2.Text = textBox1.Text;
form2.ShowDialog();


Egalement, ne nomme pas de la même façon tes classes et des objets, sinon on ne s'en sortira plus. Mets une minuscule à tes objets et majuscule à tes classes. C'est le minimum pour ne pas s'y perdre.

En ce qui concerne ton problème avec form3, j'avoue ne pas bien le comprendre. Peux-tu être plus clair ?

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé ! -
0
caela Messages postés 68 Date d'inscription mercredi 9 décembre 2009 Statut Membre Dernière intervention 19 avril 2012
15 déc. 2009 à 12:18
Tu avais raison j'ai du mal copié c'est tout pour le bout de code
Donc je disais pour 2 forms ce code marchait, mais pour les 3 forms je fais comment?
car il fallait:
faire une saisie dans le form1
faire une saisie dans form2
afficher l'aperçu dans form3(ce qu'on a saisi dans form1 et form2)
0
caela Messages postés 68 Date d'inscription mercredi 9 décembre 2009 Statut Membre Dernière intervention 19 avril 2012
15 déc. 2009 à 14:20
infiniment merci dear Krimog ça marche très bien en plus je commence à comprendre!!!
je suis hypercontente, merci bocoup!!!!!
0
caela Messages postés 68 Date d'inscription mercredi 9 décembre 2009 Statut Membre Dernière intervention 19 avril 2012
15 déc. 2009 à 15:08
un problème résolu et un autre apparait!!!
pour les textboxs il n'y a aucun problème
mais pour les combobox c'est le dégât!!!!
car dans mon form2 par exemple j'ai un combobox chargé à partir d'une base!!!
si je ne change pas la valeur par défaut ça passe, mais dès que je change (si je
sélectionne un item différent que celui qui est affiché par défaut) il y a une erreur du genre comme ça:
"Exception ConstrainstException n'a pas été gérée"
=>La colonne 'id_vol' doit être unique. La valeur 'md002' est déjà présente.
alors que c'est la première fois que je fais la saisie ou s'agit d'une erreur de différente nature?
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
15 déc. 2009 à 15:18
Je vais avoir besoin du bout de code où ton exception est générée.

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé ! -
0
caela Messages postés 68 Date d'inscription mercredi 9 décembre 2009 Statut Membre Dernière intervention 19 avril 2012
15 déc. 2009 à 15:38
C'est quand j'appuis sur le bouton qui est censé ouvrir le form3:
le code du bouton:
private void btnsuiv_Click(object sender, EventArgs e)
{
Form3 form3 = new Form3(referenceForm1, this);
form3.Show();
this.Hide();
}

le code dans le form3:
public Form5(Form1 f1,Form2 f2)
{
InitializeComponent();
monlistbox.Items.Add(f1.txtdests.Text);
monlistbox.Items.Add(f2.id_volComboBox.Text);



}
ce que je comprends pas c'est pourquoi ça marche si je ne change pas la valeur du combo
merci!
0
Rejoignez-nous