Mise à jour automatique d'une form à partir d'une autre

Signaler
Messages postés
9
Date d'inscription
vendredi 30 novembre 2007
Statut
Membre
Dernière intervention
16 avril 2008
-
Messages postés
9
Date d'inscription
vendredi 30 novembre 2007
Statut
Membre
Dernière intervention
16 avril 2008
-
Bonjour à toute la communauté!

Tout d'abord, la petite phrase d'introduction pour dire que je suis débutant et que je serai vraiment navré d'être le trentième à poser la quesiton mais j'ai déjà fait une recherche sur ce forum sans trouver des réponses à ma portée : je suis débutant :)

Voilà, maintenant, on commence.
Mon problème est lié au passage de paramètres entre formulaire. J'ai une form mère qui appelle une form fille dans laquelle je rentre des paramètres. Une fois validée, la form fille se ferme et je récupère les paramètres dans la form mère (merci à Bidou et son projet dédié au passage de paramètres : http://www.csharpfr.com/codes/PASSAGE-PARAMETRES_26735.aspx).

Maintenant, je souhaite qu'une fois cette form fille fermée, une troisième form (constituée d'une listview et ouverte lorsque la form mère s'ouvre) soit automatiquement mise à jour avec les paramètres que je viens de rentrer mais également tous ceux que j'ai déjà pu rentrer auparavant.

En gros, un appel du type
Form3 form = new form(client);
form.Showdialog();
dans ma form mère me renvoie ma listview avec uniquement la dernière valeur... Pas bien.

La solution est peut être dans le projet de Bidou justement, mais je ne suis pas capable de la trouver sans aide!
Donc, merci pour votre aide!

++
Benoit

6 réponses

Messages postés
666
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
5
Salut

J'avais vu le projet de Bidou qui aide c'est vrai
Mais j'ai aussi trouvé ceci qui apporte encore un peu d'info et ressemble asser a ce que tu veux faire

http://www.codeproject.com/KB/cs/PassDataWinForms.aspx
Messages postés
9
Date d'inscription
vendredi 30 novembre 2007
Statut
Membre
Dernière intervention
16 avril 2008

Salut olibara,

En fait, le lien que tu m'as passé est trop similaire à la source de Bidou je pense. Mais merci d'avoir pris du temps pour moi!

Mon souhait est de faire une mise à jour sur une form ouverte en même temps que la form principale à partir d'une troisième form appelée par la form mère. Je vais illustrer ce souhait pour bien me faire comprendre :
En fait, je veux faire un logiciel de billetterie pour salle de spectacle.
Ma form mère représente la salle avec ses sièges. Je peux cliquer sur un siège et une form s'ouvre avec les renseignements type Nom etc... A l'appui sur OK, j'update des trucs dans ma form mère, genre changement de couleur de siège fonction de la personne (donc la source de Bidou et celle que tu m'as passé sont utiles).
Mais j'ai aussi une autre form ouverte avec la form mère qui récapitule les gens présents dans la salle dans une listview. C'est cette form que je n'arrive pas à mettre à jour "avec mémoire", c'est-à-dire que j'arrive bien à repérer la nouvelle entrée, mais je n'ai plus l'entrée précédente dans ma listview! En gros, si 20 personnes ont acheté une places, je n'ai dans ma listview que le dernier client!

Si jamais tu as des idées, si jamais vous avez des idées!
++ et merci d'avance
Benoit
Messages postés
666
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
5
A premiere vue ca ressemble plus a un probleme d'ajout dans ta listview qu'a un problème de dialogue entre form !!


Maintenant il faut voir comment tu remplis ta listview et comment tu la manipule !
Messages postés
9
Date d'inscription
vendredi 30 novembre 2007
Statut
Membre
Dernière intervention
16 avril 2008

Je te crois volontiers, je ne suis pas ce qu'on peut appeler un expert :)

En fait, mon problème c'est que je ne sais pas comment faire référence dans ma form mère à la listview de l'autre form sans faire un :
Form3 form = new form(client);
form.Showdialog();
avec client qui contient les données de la form 2 (Nom etc...) et que je souhaite afficher dans la listview.
Le problème de faire un appel par la commande new, c'est que ça créé précisement une nouvelle form, sans rien dedans!
Je ne sais pas si je donne assez d'informations en fait...
Allez, je mets un peu plus de code, au pire, ça ne servira pas :
dans ma form mère :
        private void CaseClick(object sender, MouseEventArgs e)
        {
(...)

            Data Data = new Data(lettre, chiffre); // Appel de la form 2 (paramètres)
            Data.Client_Added += new Bil_COxix.Data.AddClientEventHandler(this.newUser_Client_Added);
            Data.ShowDialog(); // On l'affiche

(...)
        }

        private void newUser_Client_Added(Client client)
        {
            Recap Recap = new Recap(client); // C'est ma form 3 (récapitulatif)
            Recap.Update(); // Je l'ai déjà ouverte au lancement de la form mère
        }

Dans ma form 3 (Recap)
        public Recap(Client client)
        {
            InitializeComponent();

            this.listView1.Items.Add(client.Nom).SubItems.AddRange(new string[] {client.Prenom, client.Acheteur });
        }

C'est peut être trivial, désolé par avance (remarque, le but de questions sur un forum, c'est bien de progresser, qu'on soit bon ou mauvais!)

++
Benoit
Messages postés
666
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
5
Hors contexte, pas evident de decortiquer ta logique

Mais voici une methode un peu "hard" mais simple a mettre en oeuvre

// dans ta form appellante :
      Form Zoom = new FrmZoom(this, pa, pb);
      Zoom.Show(this);

// *******************************
// Dans la form appellée

  public partial class FrmZoom : Form
  {
    private MainForm _Maf; // on stocke une référence vers la form concernée

    public FrmZoom(MainForm Mf,Point pa, Point pb)
    {
      _Maf = Mf;
      InitializeComponent();
    }

// et ici tu peux parler a _Maf (cad ta forme appellante)
Messages postés
9
Date d'inscription
vendredi 30 novembre 2007
Statut
Membre
Dernière intervention
16 avril 2008

Salut olibara, et merci pour ta réponse à nouveau.

Je ne m'en suis pas sorti comme ça non plus, pas évident de tomber juste à distance j'en conviens!!!
Du coup, je suis passé par un enregistrement dans un fichier xml à partir de la form 2, loadé par la form 3 pour mettre à jour sa listview.

++
Benoit