Comment conserver des données dans un form ?

Signaler
Messages postés
24
Date d'inscription
mardi 27 avril 2004
Statut
Membre
Dernière intervention
19 mai 2004
-
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
-
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

Messages postés
24
Date d'inscription
mardi 27 avril 2004
Statut
Membre
Dernière intervention
19 mai 2004

je bosse en c# :big)

des frites !
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
46
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 !
Messages postés
24
Date d'inscription
mardi 27 avril 2004
Statut
Membre
Dernière intervention
19 mai 2004

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 !
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
46
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
Messages postés
24
Date d'inscription
mardi 27 avril 2004
Statut
Membre
Dernière intervention
19 mai 2004

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 !
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
46
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
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
13
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..."
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
13
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..."
Messages postés
24
Date d'inscription
mardi 27 avril 2004
Statut
Membre
Dernière intervention
19 mai 2004

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 !
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
13
yop ca marche aussi comme ca et c'est encore plus propre...

:)

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."