Comment conserver des données dans un form ?

delegouine Messages postés 24 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 19 mai 2004 - 5 mai 2004 à 11:04
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 - 6 mai 2004 à 11:39
Mon problème : je développe une appli dans laquelle j'utilise plusieurs formulaires. Je ferme donc mon formulaire 1 à l'ouverture du formulaire 2 pour éviter de me retrouver avec des formulaires partout et un truc ingérable.
Or, sur ce formulaire 1, il y a des données que je souhaite conserver pour plus tard, par exemple si je rouvre mon formulaire 1.
Mais je ne sais pas comment faire pour conserver ces données :sad) : j'ai essayé de gérer avec des form1.Hide() à la place de form1.close() mais je suis pas assez douée pour réussir à le gérer... Est-ce que je dois passer par un fichier dans lequel j'enregistre mes données et si oui, comment faire ? Ou je suis passée à côté de la méthode élémentaire à laquelle tout le monde pense sauf moi ?

des frites !

10 réponses

delegouine Messages postés 24 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 19 mai 2004
5 mai 2004 à 11:16
je bosse en c# :big)

des frites !
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
5 mai 2004 à 13:40
Je viens pas pour t'apporter une solution parce que j'ai jamais été confronté a ce problème, donc je sais pas, mais juste une petite idée.
Vu que tu as l'air de bosser avec plusieurs fenetres, peut-etre tu pourrais faire une application MDI ?
Ca ferait plus "propre" et le probleme des formulaires partout ne se poserait pas reellement.
Enfin, bien sur, si l'appli sur laquelle tu bosses te le permet.

Bon courage !
0
delegouine Messages postés 24 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 19 mai 2004
5 mai 2004 à 15:06
houlà, si je dois tout redévelopper (j'en suis à une douzaine de formulaires) et que ça ne sert à rien... %-6
Il n'existe pas d'autre possibilité ?

des frites !
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
5 mai 2004 à 15:42
Ok, donc reprenons depuis le début.
Tu as une form d'ouverte. Et quand tu ouvres une autre form, tu aimerais que la premiere se cache (histoire de conserver les données).

Ce que jaimerais savoir, c'est de quelle facon sont ouvertes tes forms ? Est-ce que tu as une fenetre principale qui ouvre chaque formulaire ?
Ou est ce que c'est un formulaire qui en appele un autre, qui en appele un autre... en chaine ?

Dans le premier cas, il faut que dans le code de l'evenement onClick du bouton qui ouvre un formulaire tu fasses :

form1.Visible = !form1.Visible


dans le second cas (si ton premier formulaire ouvre le 2eme), il faut que dans le constructeur du second formulaire, tu passes en parametre un object Form qui indique quel form l'a ouvert.
Et a la fermeture de ce second formulaire, tu demandes de reouvrir le formulaire "parent" passé en parametre

J'espere que c'est pas trop confus :big)
Et j'espere que c'était bien ca ton probleme
0

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

Posez votre question
delegouine Messages postés 24 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 19 mai 2004
5 mai 2004 à 16:13
Tu as tout à fait cerné mon problème :)
Je suis dans le 2ème cas, un form en appelle un autre, qui appelle le précédent.

J'avais déjà entendu parler de passer un formulaire en paramètre mais je ne sais pas comment le faire :

- quand on passe le 1er formulaire en paramètre, comment fait-on ? C'est du genre form2 f2 = new form2(ref f1) ?
Le problème est que je ne sais pas comment définir f1...

- quand on rappelle le 1er formulaire (à la fermeture du 2nd), on met "nom_dans_constructeur_f2".show ou on crée un truc du genre
form1 f1 = new form1 (); f1.Show();this.Close(); 

??? ou autre chose ? Parce que j'ai essayé ceci :
code du constructeur :

public form2 (ref form f1)
{
...
}


et à l'appel du form1

f1.Show(); // même nom que le paramètre
this.Close();


et là le compilateur ne voit pas que j'appelle le form passé en paramètre...

Je suis (totalement) perdue !!!!
:sad)

des frites !
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
5 mai 2004 à 16:35
En gros ca devrait donenr ca:

Appele de la Seconde form depuis form1 f1:
form2 f2 = new form2(f1);
f1.hide();


Et au nivau de la form2

public class form2 : Form
{
   Form parent = null; // contiendra  f1
   form2(Form f)
   {
        this.parent = f; // 
    }

etc....
}


et pour l'evenemement closing de la 2eme form
parent.Visible = true;
// ou parent.Show();


Et sinon, pas besoin de mettre le "ref" dans les params du constructeur.
Quand tu passe un objet (comme une form) en parametre, tu passes son adresse memoire.

Ca devrai marcher (j'espere)
Desolé, j'ai peut-etre fait des erreurs de syntaxe, etc... Faudra corriger
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
5 mai 2004 à 17:09
et si tu stockais tes donnees du form X dans un dataset et que tu enregitrerais a la fermeture de ton form tu utilise le dataset.writeXml("nom_fichier");
et lorsque tu a besoin de tes info tu utilise un autre dataset dans lequel tu fais un "dataset.readXml("nom_du_fichier");
et voilou...
y a plus qu'a gerer tes champs dans ton dataset...et le tour est joue...

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
5 mai 2004 à 17:17
ou alors moins tordu tu defini des variables public dans lesquels tu stocks les valeur de tes champs et tu fais des form.hide(), etc....

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
0
delegouine Messages postés 24 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 19 mai 2004
6 mai 2004 à 11:29
Bon en fait, j'ai changé les relations entre les formulaires pour obtenir un système d'onglets via un tabcontrol et maintenant mes données restent en mémoire même si je change de form.

Merci quand même de vous être intéressés à mon problème, vos conseils me serviront certainement pour plus tard !
:big)

des frites !
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
6 mai 2004 à 11:39
yop ca marche aussi comme ca et c'est encore plus propre...

:)

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
0
Rejoignez-nous