IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Paramétrage d'une form via une 2ème


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de cs_ntd
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2006
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 598
    Par défaut Paramétrage d'une form via une 2ème
    Bonjours à tous !

    Je me pose une petite question de "bonne pratique" en C#...
    Pour faire simple :

    J'ai une form FormMain, principale. Un click sur un bouton déclanche l'ouverture d'une deuxième form, FormParam, servant à configurer des options (jusque là rien de très exotique).

    Et mes questions se situent à ce niveau : je souhaite récupérer les valeurs de FormParam pour configurer FormMain. J'y arrive, mais ayant plein de manières de faire différente, je ne sais laquelle choisir...

    Pour l'instant, je fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    public class FormParam
    {
        DialogResult result;
     
        public bool setParam(ref int x, ref int y)
        {
            this.ShowDialog();
            if (this.result == DialogResult.OK)
            {
                x = Int32.Parse(textBox1.Text);
                y = Int32.Parse(textBox2.Text);
                return true;
            }
            else
            {
                return false;
            }
        }
    }
     
    public class FormMain
    {
        private void button_Click(object sender, EventArgs e)
        {
            FormParam fparam = new FormParam();
            int x = 0, y = 0;
            if (fparam.setParam(ref x, ref y))
            {
                //... Actions en fonction des paramètres
            }
        }
    }
    Pour ceux qui ont la flemme de lire, voici un court résumé :

    - Je clique sur un bouton dans FormMain
    - Cela lance FormParam.setParam, dans laquelle je passe des paramètres par référence
    - Dans FormParam.setParam, je me charge d'afficher le forumlaire et de la validation des contrôles, et j'indique si les paramètres sont bons.
    - Au retour de cette fonction dans FormMain, je récupère TRUE/FALSE, suivant si l'action a été validée ou au contraire annulée.


    Personnellement, je n'ai pas de problèmes avec ça, mais j'ai l'impression que c'est pas trop C#-like (Note: j'ai mangé pas mal de C ces derniers temps ).
    Donc parmis les options qui s'offrent à moi, j'hésite entre:

    • Propriété avec 'get' de défini pour les paramètres de FormParam, que je récupère une fois cette form fermée.
    • Au contraire, mettre des propriétés 'get/set' dans FormMain. FormParam se lance, et se charge depuis sa fenêtre de modifier les attributs de FormMain.
    • Une variante de la précédente : Toujours 'get/set' dans FormMain, sauf que c'est FormParam qui se charge des traitements, et qui va donc accéder au composants graphiques et modifier l'état de FormMain (mais je risque d'avoir besoin de ça : http://faqcsharp.developpez.com/?pag...sc#form_thread).
    • On peut sûrement imaginer d'autres choses...

    D'un point de vue concéption, c'est pas tellement fixé, je veux dire je suis libre de modifier l'architecture, mais aucune des solutions ci-dessus ne serait abbérante d'un point de vue conception...
    Et vous de votre coté, que faites-vous quand vous souhaiter utiliser une autre fenêtre pour paramètrer la première ?

    Merci d'avance pour vos réponses

  2. #2
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Bonjour,

    J'aime assez la solution telle que tu l'a codée.
    On peut faire une variante en ajoutant dans la classe FormParam cette fonction statique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        public static bool setParam(ref int x, ref int y)
        {
           return new FormParam().setParam(ref int x, ref int y) ;
        }
    et en l'appelant dans le main :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        private void button_Click(object sender, EventArgs e)
        {
            int x = 0, y = 0;
            if (FormParam.setParam(ref x, ref y))
            {
                //... Actions en fonction des paramètres
            }
        }

  3. #3
    Membre éclairé Avatar de cs_ntd
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2006
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 598
    Par défaut
    Salut,

    Merci de ta réponse Graffito

    Surtout que oui je suis d'accord avec toi, c'est mieux d'avoir une fonction statique que d'avoir un membre qui se balade du coup...

    En fait si je me pose toutes ces questions, c'est qu'il me semble avoir lu/entendu qu'il fallait éviter les 'ref' en C#, que c'était trop 'bidouille'.

    Mais bon apparement ça à pas l'air de trop choquer donc c'est bon ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 10/06/2010, 15h31
  2. Réponses: 8
    Dernier message: 07/03/2009, 14h02
  3. Intégrer une Form dans une Form principale
    Par rol72 dans le forum C++Builder
    Réponses: 3
    Dernier message: 27/09/2006, 14h20
  4. Réponses: 3
    Dernier message: 16/01/2006, 16h02
  5. Ouvrir une form via une ComboBox
    Par Conficius dans le forum Composants VCL
    Réponses: 3
    Dernier message: 05/11/2005, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo