Pb lors d'un transfert de variable entre 2 form [Résolu]

cs_kakol 180 Messages postés mardi 21 décembre 2004Date d'inscription 12 juin 2008 Dernière intervention - 19 juil. 2005 à 20:24 - Dernière réponse : Troborg 65 Messages postés samedi 24 avril 2004Date d'inscription 1 août 2005 Dernière intervention
- 19 juil. 2005 à 23:49
Bonjour a tous,
Voila j'ai 2 form, Form1 et Form2. Dans le Form1 j'ai un comboBox et je voudrais pouvoir me servir dans le Form2 de la valeur que je choisie dans le combobox.
J'ai regarde sur les autres forums et essaye ca:
- dans le Form1 je declare une variable name (public stirng name). Puis dans la fonction du bouton qui me permet d'ouvrir Form2 je met name = comboBox1.Text;. Quand je l'affiche dans un messagebox, name contient bien la valeur de mon combobox.
- dans le Form2 je declare public
Form1 form = new Form1(); en global. Puis pour pour me servir de ma valeur je fais form.name. Le probleme c'est que cela me renvoie une chaine vide. En effet dans Form2 quand j'affiche dans un messagebox la valeur de form.name, celle-ci est vide.
C'est surement bete mais comme je debute j'ai beau chercher je n'arrive pas a le resoudre.
Pouvez-vous m'aider svp?

*** Kakol ***
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Troborg 65 Messages postés samedi 24 avril 2004Date d'inscription 1 août 2005 Dernière intervention - 19 juil. 2005 à 22:14
3
Merci
Euh... Autant pour moi...

J'ai fait une erreur en écrivant mon message précédent : le
constructeur supplémentaire est à ajouter dans la Form2... et non dans
la Form1... Bref, dans la Form2 tu peux mettre :



private string selectedDB;
public Form2(string selectedDB) // C'est là que j'm'étais planté en marquant Form1 !!
{
InitializeComponent();
this.selectedDB = selectedDB;
}



Le reste de mon message était valide normalement...



Bref :

1. Retire le constructeur que tu as ajouté dans la Form1, et mets le dans la Form2,

2. Utilise le nouveau constructeur au moment où tu appelles ta Form2, par exemple en faisant :



//bouton permettant d'ouvrir le Form2
private void buttondatabase_Click(object sender, System.EventArgs e)
{
Form2 dlg = new Form2( comboBox1.Text );
dlg.ShowDialog();
}


3. Pour te connecter à ta base, ça donne alors :


//connexion a ma base
private void buttonconnection_Click(object sender, System.EventArgs e)
{
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + this.selectedDB; //nom de la base a ouvrir
....
}

Voila... Comme tu peux le voir, normalement dans Form2, tu ne dois pas avoir de référence à Form1 !




Désolé pour mon erreur Form1/Form2... !

Merci Troborg 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de Troborg
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 19 juil. 2005 à 20:37
0
Merci
Salut, j'ai pas bien compris, tu veux avoir une référence de form2 dans form1 !? Regardes ce code, c'est peut être ca que tu cherches:

http://www.csharp.fr/code.aspx?ID=26735
Commenter la réponse de Lutinore
cs_kakol 180 Messages postés mardi 21 décembre 2004Date d'inscription 12 juin 2008 Dernière intervention - 19 juil. 2005 à 21:01
0
Merci
merci de m'avoir repondu.
J'avais regarde mais je n'avais pas reussi a trouver la solution a mon probleme. C'est assez complique a expliquer sans voir l'appli mais je vais essayer d'etre plus claire.
En fait, dans le combobox de ma Form1 j'ai des noms de bases de donnees. Cela me sert a selectionner la base avec laquelle je veux travailler. J'ai un bouton qui doit alors me permettre une fois la base selectionnee de m'ouvrir ma Form2. La Form2 me permet alors de travailler sur la base de donnee que j'ai selectionnee dans la Form1 (affichage des tables, suppression d'un element ...). Chaque form fonctionne bien de son cote mais je n'arrive pas a faire le lien entre les deux. En effet, dans la Form2 je n'arrive pas a recuperer le nom de la base selectionnee dans le combobox de la Form1 pour pouvoir ensuite m'y connecter, cela me renvoie toujours une chaine vide.
Que puis-je faire?

*** Kakol ***
Commenter la réponse de cs_kakol
Troborg 65 Messages postés samedi 24 avril 2004Date d'inscription 1 août 2005 Dernière intervention - 19 juil. 2005 à 21:08
0
Merci
Dans la mesure où ta Form2 a tout le temps besoin du nom de la base,

ce que tu peux faire, c'est ajouter lui une variable privée et un constructeur :



private string selectedDB;

public Form1(string selectedDB)

{

InitializeComponent();

this.selectedDB = selectedDB;

}



Au moment de créer la Form2, au lieu de faire :

Form2 myForm = new Form2();

il te suffit maintenant de faire :

Form2 myForm = new Form2("...."); // où "..." représente le nom de la base à passer !
Commenter la réponse de Troborg
cs_kakol 180 Messages postés mardi 21 décembre 2004Date d'inscription 12 juin 2008 Dernière intervention - 19 juil. 2005 à 21:43
0
Merci
Salut Troborg.
Je pense que je doit pas etre tres loin mais j'y arrive toujours pas.
J'ai mis dans Form1 :
private string selectedDB;
public Form1(string selectedDB)
{
InitializeComponent();
this.selectedDB = selectedDB;
}

//bouton permettant d'ouvrir le Form2
private void buttondatabase_Click(object sender, System.EventArgs e)
{
selectedDB=comboBox1.Text; //recup de la valeur du combobox
Form2 dlg = new Form2();
dlg.ShowDialog();
}

puis dans Form2 :
Form1 myForm = new Form1(???);

//connexion a ma base
private void buttonconnection_Click(object sender, System.EventArgs e)
{
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+form.selectedDB; //nom de la base a ouvrir
....
}

la je ne sais pas quoi mettre a la place de "???" car le nom de la base a passer c'est celui que j'ai selectionne dans le combobox du Form1.
Plus j'essaie moins j'y comprend .

*** Kakol ***
Commenter la réponse de cs_kakol
cs_kakol 180 Messages postés mardi 21 décembre 2004Date d'inscription 12 juin 2008 Dernière intervention - 19 juil. 2005 à 21:44
0
Merci
pardon une petite erreur : ... Source="+myForm.selectedDB;

*** Kakol ***
Commenter la réponse de cs_kakol
cs_kakol 180 Messages postés mardi 21 décembre 2004Date d'inscription 12 juin 2008 Dernière intervention - 19 juil. 2005 à 22:36
0
Merci
Waouw merci beaucoup Troborg ca marche super bien, ton code est parfait ! Tu m'a enleve une grosse epine du pied ! (tu es tout excuse pour ton erreur, t'en fais pas, t'es pas le seul a en faire lol).
Encore merci. et bonne continuation.

*** Kakol ***
Commenter la réponse de cs_kakol
Troborg 65 Messages postés samedi 24 avril 2004Date d'inscription 1 août 2005 Dernière intervention - 19 juil. 2005 à 23:49
0
Merci
Bah de rien !

Content d'avoir pu aider..
Commenter la réponse de Troborg

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.