Passer simplement une variable entre 2 forms [Résolu]

adnotlegland 53 Messages postés vendredi 7 octobre 2005Date d'inscription 9 avril 2008 Dernière intervention - 28 févr. 2008 à 23:19 - Dernière réponse : adnotlegland 53 Messages postés vendredi 7 octobre 2005Date d'inscription 9 avril 2008 Dernière intervention
- 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
Afficher la suite 

9 réponses

Répondre au sujet
SharpMao 1025 Messages postés mardi 4 février 2003Date d'inscription 7 juin 2010 Dernière intervention - 29 févr. 2008 à 08:04
+3
Utile
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)
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de SharpMao
Neo020585 178 Messages postés lundi 10 mars 2003Date d'inscription 6 juillet 2009 Dernière intervention - 29 févr. 2008 à 14:45
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Neo020585
adnotlegland 53 Messages postés vendredi 7 octobre 2005Date d'inscription 9 avril 2008 Dernière intervention - 29 févr. 2008 à 09:27
0
Utile
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  
Commenter la réponse de adnotlegland
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 29 févr. 2008 à 09:54
0
Utile
Salut,
Tu peux aussi regarder ici:
http://www.csharpfr.com/codes/PASSAGE-PARAMETRES_26735.aspx

<hr />
-My Blog-
Commenter la réponse de cs_Bidou
adnotlegland 53 Messages postés vendredi 7 octobre 2005Date d'inscription 9 avril 2008 Dernière intervention - 29 févr. 2008 à 11:18
0
Utile
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
Commenter la réponse de adnotlegland
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 29 févr. 2008 à 12:35
0
Utile
lol (...)

<hr />
-My Blog-
Commenter la réponse de cs_Bidou
adnotlegland 53 Messages postés vendredi 7 octobre 2005Date d'inscription 9 avril 2008 Dernière intervention - 29 févr. 2008 à 14:44
0
Utile
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  
Commenter la réponse de adnotlegland
bubbathemaster 342 Messages postés dimanche 26 janvier 2003Date d'inscription 25 mars 2009 Dernière intervention - 29 févr. 2008 à 15:15
0
Utile
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.
Commenter la réponse de bubbathemaster
adnotlegland 53 Messages postés vendredi 7 octobre 2005Date d'inscription 9 avril 2008 Dernière intervention - 29 févr. 2008 à 15:33
0
Utile
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 ??
Commenter la réponse de adnotlegland

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.