Passer simplement une variable entre 2 forms

Résolu
adnotlegland Messages postés 53 Date d'inscription vendredi 7 octobre 2005 Statut Membre Dernière intervention 9 avril 2008 - 28 févr. 2008 à 23:19
adnotlegland Messages postés 53 Date d'inscription vendredi 7 octobre 2005 Statut Membre Dernière intervention 9 avril 2008 - 29 févr. 2008 à 15:33
Bonjour à tous,

bon ca fait 24h que j'essaye de passer une variable d'une form à une autre et je ne comprends pas !
J'ai beaucoup chercher et la facon la plus simple sur laquelle je suis tombé c'est de passer par les accesseurs mais voilà ca marche pas....
C'est pourtant tres simple: une form1 avec une textbox1 et un bouton, et une form2 qui s'ouvre quand je clique sur le boutton et qui contient juste une textbox2, ainsi je voudrais recuperer le texte de la textbox1 dans la textbox2.

bon le code de la form1 :

using

System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace test
{

public
partial
class
Form1 :
Form
{

public Form1()
{
InitializeComponent();
}

private
void button1_Click(
object sender,
EventArgs e)
{

Form2 frm2 =
new
Form2();
frm2.ShowDialog();
}

public
string retour
{

get
{

return textBox1.Text;
}
}
}
}
et celui de la form2 :

using

System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace test
{

public
partial
class
Form2 :
Form
{

public Form2()
{
InitializeComponent();
}

private
void Form2_Load(
object sender,
EventArgs e)
{
textBox1.Text = form1.retour(); \\ erreur : Erreur 1 Le nom 'form1' n'existe pas dans le contexte actuel
 

}
}
}

Si vous pouviez m'éclairer de vos lumieres sur ce probleme de POO je vous promets un gros cheque ou au moins de vifs remerciements

9 réponses

SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
29 févr. 2008 à 08:04
Hello,

C'est normal, il ne peut pas connaître form1 si tu ne lui donne pas cette variable. Essaie comme ça :

private
Form1 form1;

private Form2()

{
InitializeComponent();
}

public Form2(
Form1 f1):
this()

{
form1 = f1;
}

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
3
Neo020585 Messages postés 178 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 6 juillet 2009 4
29 févr. 2008 à 14:45
Si tu ne veux passer qu'un seul paramètre, il est plus simple de faire ceci :

*********
* Form1 *
*********



private
Form1()
{
    InitializeComponent();
}

private
void
button1_Click(
object
sender,
EventArgs
e)
{

    Form2
frm2 =
new
Form2
(
textbox1.Text
);
    frm2.ShowDialog();
}












*********

* Form2 *
*********









private

Form2()


{

    InitializeComponent();

}




public
Form2(

String
value)








{




    textbox1.Text = value;


}














"Une chose me laisse perplexe : Est-ce moi ou les autres qui sont fous ?" A. Einstein
3
adnotlegland Messages postés 53 Date d'inscription vendredi 7 octobre 2005 Statut Membre Dernière intervention 9 avril 2008
29 févr. 2008 à 09:27
ben j'avais capté qu'en lui donnant form1.retour() > form1 n'est pas le nom d'une instance mais du "moule" donc ca peut pas marcher mais lorsqu'on lance le programme, form1 est forcément instancié donc comment connaitre le nom de l'instance qui s'affiche afin de le donner à form2 ?

Bon sur papier ma question n'est peut-etre pas tres clair
alors si tu pouvais au moins
m'expliquer où placer ce bout de code ce serait sympa. Là en fait je comprends pas trop ce que ca fait et où placer tout ca ....on surcharge Form2() ? 

merci pour les precisions et cette lueur qui scintille tout au loin au bout du tunnel  
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
29 févr. 2008 à 09:54
Salut,
Tu peux aussi regarder ici:
http://www.csharpfr.com/codes/PASSAGE-PARAMETRES_26735.aspx

<hr />
-My Blog-
0

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

Posez votre question
adnotlegland Messages postés 53 Date d'inscription vendredi 7 octobre 2005 Statut Membre Dernière intervention 9 avril 2008
29 févr. 2008 à 11:18
En general je cherche avant de poster, j'etais tombé dessus mais ca me plaisait pas trop, j'ai trouvé plus simple :

bon le code de la form1 :

using



System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace test
{
publicpartialclassForm1 :


Form
{
public Form1()
{
InitializeComponent();
}
privatevoid button1_Click(object sender, EventArgs e)
{
Form2 frm2 = newForm2(this);
frm2.ShowDialog();
}
publicstring retour()
{



return textBox1.Text;
}
}

et celui de la form2 :


using



System;


using
System.Collections.Generic;


using
System.ComponentModel;


using
System.Data;


using
System.Drawing;


using
System.Text;


using
System.Windows.Forms;


namespace
test
{


public



partial



class



Form2
:

Form

{
private

Form1 frm1;


public
Form2()
{
InitializeComponent();
}
public Form2(Form1 f1):this()
{
frm1 = f1
}


private



void
Form2_Load(

object
sender,

EventArgs
e)
{
textBox1.Text = frm1.retour();
}
}
}


Je pense que c'est quand meme le moins lourd qu'en pensez vous ?? et  merci beaucoup SharpMao de m'avoir mis sur la voie
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
29 févr. 2008 à 12:35
lol (...)

<hr />
-My Blog-
0
adnotlegland Messages postés 53 Date d'inscription vendredi 7 octobre 2005 Statut Membre Dernière intervention 9 avril 2008
29 févr. 2008 à 14:44
Quoi lol ? je passe à peine du VB au C#, si je dis des conneries ca serait cool de me reprendre,  ici http://www.csharpfr.com/codes/PASSAGE-PARAMETRES_26735.aspx ca me semblait pas tres clair, alors que la solution sur laquelle je me suis aiguillée c'est tres concis et sans fioriture. On te file un truc pour débutant qui est censé te montrer un truc tres tres tres basic et on te met des structures et des delegués, okay si tu veux pas faire de la POO tu fais pas du CSharp mais bon pourquoi mettre ca dans un programme qui est censé expliquer à un pauvre type comment juste passer un parametre d'une form à une autre ? Enfin je sais pas quoi  
0
bubbathemaster Messages postés 339 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 25 mars 2009 4
29 févr. 2008 à 15:15
Et puis rappel toi qu'une form n'est qu'une classe comme une autre, tu peux tout à fait bidouiller son constructeur à ta convenance, et en particulier lui passer en argument une autre form.
0
adnotlegland Messages postés 53 Date d'inscription vendredi 7 octobre 2005 Statut Membre Dernière intervention 9 avril 2008
29 févr. 2008 à 15:33
ha ben vi ca le fait ça , c'est bien sympathique ce petit code, donc en passant "this" t'as acces à tout ce qui est public de la form1 sinon tu peux passer n'importe quelle propriété à sa place et ca reduit le code....Et sinon ca existe pas des vrais cours au lieu de casser les coucougnettes au gens sur les forums ??
0
Rejoignez-nous