cs_kakol
Messages postés180Date d'inscriptionmardi 21 décembre 2004StatutMembreDernière intervention12 juin 2008
-
19 juil. 2005 à 20:24
Troborg
Messages postés65Date d'inscriptionsamedi 24 avril 2004StatutMembreDernière intervention 1 août 2005
-
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?
Troborg
Messages postés65Date d'inscriptionsamedi 24 avril 2004StatutMembreDernière intervention 1 août 20056 19 juil. 2005 à 22:14
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 :
//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 !
cs_kakol
Messages postés180Date d'inscriptionmardi 21 décembre 2004StatutMembreDernière intervention12 juin 2008 19 juil. 2005 à 21:01
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?
cs_kakol
Messages postés180Date d'inscriptionmardi 21 décembre 2004StatutMembreDernière intervention12 juin 2008 19 juil. 2005 à 21:43
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 .
cs_kakol
Messages postés180Date d'inscriptionmardi 21 décembre 2004StatutMembreDernière intervention12 juin 2008 19 juil. 2005 à 22:36
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.