[Débutant Poo][C#] stocké les données entre deux forms [Résolu]

Signaler
Messages postés
56
Date d'inscription
dimanche 1 août 2004
Statut
Membre
Dernière intervention
28 août 2008
-
Messages postés
97
Date d'inscription
lundi 2 mai 2005
Statut
Membre
Dernière intervention
21 mars 2008
-
Bonjour,

donc j'ai une class importation chargé de se mémoriser de la valeur d'un textbox dont voici le code ci-dessous:

class importation
{
private String m_Url;

public String Url
{
get { return m_Url; }
set { m_Url= value; }
}
}

Dans ma form, lorsque je rentre une valeur dans le textbox, et que
je clique sur suivant, j'instancie ma class importation, et
j'initialise sa valeur m_Url avec la valeur du textbox, ensuite j'ouvre
une deuxième form pour afficher le valeur de m_Url sauf que là ca
affiche null, pourquoi ?

public partial class form1 : Form
{

public form1l()
{
InitializeComponent();
}

private void btnSuivant_Click(object sender, EventArgs e)
{
importation impt = new importation();
impt.Url= textBox1.Text;
test form2 = new test();
form2.Show();
this.Hide();
}
}

et la deuxième form où je veux récupérer la valeur dans la class importation:

public partial class test : Form
{
public test()
{
InitializeComponent();
}

private void test_Load(object sender, EventArgs e)
{
importation titi = new importation();
label1.Text = titi.Url; //donc là ca m'affiche null ?
}

}

Donc voilà, j'ai deux questions:

1 - pourquoi lorsque j'instancie ma class importation dans ma
deuxième form et que je récupère la valeur de m_Url, ca affiche null
dans mon label?

2 - quel solution dois-je utiliser alors pour pouvoir stocker des
informations de la première form et les récupérer dans une deuxième
form ?

Merci d'avance.Configuration: Windows XP
Firefox 2.0.0.12

PS: bien entendu j'ai omis volontairement les namespaces et les using pour vous faciliter la lecture.

5 réponses

Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
34
private void test_Load(object sender, EventArgs e)
{
    // ici tu crées un nouvel objet titi qui existe nulle part ailleurs.
    importation titi = new importation();
    // null, c'est normal puisque qu'il vient d'être crée.
    label1.Text = titi.Url; //donc là ca m'affiche null ?
} // ici titi n'existe plus, il peut être ramassé par le GC.


 


private void btnSuivant_Click(object sender, EventArgs e)
{
    // ici tu crées un nouvel objet impt qui existe nulle part ailleurs.
    importation impt = new importation();
    impt.Url= textBox1.Text;
    test form2 = new test();
    form2.Show();
    this.Hide();
} // ici impt n'existe plus, il peut être ramassé par le GC.
Messages postés
97
Date d'inscription
lundi 2 mai 2005
Statut
Membre
Dernière intervention
21 mars 2008
3
Salut,

Sauf erreur de ma part, là tu crée deux objet complètement independant l'un de l'autre. Il faut que tu passe le 1er objet créer



en parametre, pour pouvoir recupérer ses informations, par exemple :






private Importation titi;






Public Test(Importation importation)
{
    titi = importation;
}



et lorsque tu crée une instance de ta classe Test tu fait :

Importation impt = new Importation();
impt.Url = textBox1.text;
Test test = new Test(impt);
...
Messages postés
97
Date d'inscription
lundi 2 mai 2005
Statut
Membre
Dernière intervention
21 mars 2008
3
Je ne pense pas que dans ce cas mettre la classe statique soit conseillé, pour ne pas te dire de bétise sur le pourquoi du comment je te recommande de lire ceci :

http://msdn2.microsoft.com/fr-fr/library/79b3xss3(VS.80).aspx
Messages postés
97
Date d'inscription
lundi 2 mai 2005
Statut
Membre
Dernière intervention
21 mars 2008
3
oops désolé j'ai mis trop de temps à répondre...
Messages postés
56
Date d'inscription
dimanche 1 août 2004
Statut
Membre
Dernière intervention
28 août 2008
1
c'est pas grave Kassidy,

j'ai compris pour l'histoire des objets, merci à vous deux.

Entre temps, j'ai transformer ma classe importation en classe static, ca marche aussi. Est-ce conseillé ? où devrai-je faire comme tu le dis, passer ma class en paramètre ?