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 :

Affichage d'un formulaire enfant dans sont parent depuis un autre formulaire enfant.


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 21
    Par défaut Affichage d'un formulaire enfant dans sont parent depuis un autre formulaire enfant.
    Bonjour à tous,

    l'intitulé de mon post n'est peut-être pas clair pour tous, mais je vais m'expliquer en détail (avec les portions de codes) pour vous exposer mon problème.


    Voilà, j'ai créé une application Mdi avec plusieur formulaires enfants. l'un de ces formulaires s'affiche au démarrage du programme. C'est le menu principal qui permettra a l'utilisateur d'effectuer plusieurs actions. Ce menu dispose de 3 boutons. Chacun d'eux, affichera un autre formulaire (remplir un questionnaire, afficher des statistiques ou autre).

    je vous expose ci-après la portion de code qui affichera ce menu au démarrage de l'application

    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
     
    namespace T1_UIL_EvaluationEleves
    {
        public partial class frmEvaluationEleves : Form
        {
            //Champs d'instances de formulaires
            private frmMenuEvaluation MenuEval = null;
     
     
     
     
     
            public frmEvaluationEleves()
            {
                InitializeComponent();
     
                this.MenuEval = new frmMenuEvaluation();    //création de l'instance du formulaire
                this.MenuEval.MdiParent = this;             //affectation de son parent (frmEvaluationEleves)
     
            }
     
            private void frmEvaluationEleves_Load(object sender, EventArgs e)
            {
                this.MenuEval.Show();                       //affichage du formulaire
     
            }
         }
    }
    A partir de là, quand je cliquerai sur un des contrôles pour afficher le formulaire souhaité, j'aimerai qu'il puisse s'afficher de la même façon que le menu, c'est à dire dans sont parent et non pas comme une fenêtre indépendante.

    Voici la portion de code concernée

    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
     
    namespace T1_UIL_EvaluationEleves
    {
        public partial class frmMenuEvaluation : Form
        {
            //Champs d'instance de formulaires
            private frmQuestionnaireEvaluation QuestEval = null;
     
            public frmMenuEvaluation()
            {
                InitializeComponent();
     
                this.QuestEval = new frmQuestionnaireEvaluation();
            }
     
            private void btnRemplirEvaluation_Click(object sender, EventArgs e)
            {
                this.QuestEval.Show();
            }
        }
    }

    Est-ce que je passe à coté de quelque chose, est-ce que j'ai fait une erreur quelque part ? je bloque un peu là...



    Merci d'avance à tous

  2. #2
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    Bonjour,

    Il faut aussi que tu affectes le MdiParent pour QuestEval, comme tu l'as fait pour MenuEval
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public frmMenuEvaluation()
    {
        InitializeComponent();
     
        this.QuestEval = new frmQuestionnaireEvaluation();
        this.QuestEval.MdiParent = this.MdiParent;
    }
    Après il serait peut-être plus judicieux de ne pas avoir de formulaire MenuEval, mais un MenuStrip sur le formulaire principal dont les options ouvrent les autres formulaires (qui peuvent aussi avoir leurs propres Menu pour leurs options spécifiques) ; à la manière d'un Word ou d'un Excel qui possède un menu pour créer/ouvrir plusieurs documents. Mais ceci est une autre histoire

    Cordialement !

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 21
    Par défaut
    J'ai essayé en affectant le MdiParent au formulaire QuestEval, mais ça n'a rien changé au problème...

    Cela dit, j'ai renommé mes formulaires pour plus de clarté.

    Voila ce que ca donne pour l'affichage du MenuEval

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    namespace T1_UIL_EvalEleves
    {
        public partial class frmEvalEleves : Form
        {
            #region Champs d'instances de formulaires
     
                private frmMenuEvaluation MenuEval = null;
     
            #endregion
     
            public frmEvalEleves()
            {
                InitializeComponent();
     
                this.MenuEval = new frmMenuEvaluation();
                this.MenuEval.MdiParent = this;
            }
     
            private void frmEvalEleves_Load(object sender, EventArgs e)
            {
                this.MenuEval.Show();
            }
     
            #region Module de méthodes et évènements pour le redimensionnement du formulaire MenuEvaluation
     
            //Méthode
                private void RedimMenuEval()
                {
                    MenuEval.Height = this.ClientSize.Height -
                                     (this.mnuPrincipal.Height +
                                      this.tspHaut.Height +
                                      this.tspBas.Height) - 5;
                }
     
            //Évènement
                private void RedimMenuEval_ClientSizeChanged(object sender, EventArgs e)
                {
                    this.RedimMenuEval();
                }
     
            #endregion
        }
    }
    Et voilà ce que j'ai pour l'affichage du formulaire RemplirEval

    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
     
    namespace T1_UIL_EvalEleves
    {
        public partial class frmMenuEvaluation : Form
        {
            #region Champs d'instances de formulaires
     
            private frmRemplirEvaluation RemplirEval = null;
     
     
            #endregion
     
            public frmMenuEvaluation()
            {
                InitializeComponent();
     
                this.RemplirEval = new frmRemplirEvaluation();
                this.RemplirEval.MdiParent = this.MdiParent;
            }
     
            private void btnRemplirEvaluation_Click(object sender, EventArgs e)
            {
                this.RemplirEval.Show();
            }
        }
    }

    Je met ici un screenshot de mon application d'après ce que le code ci-dessus fait

    Nom : appliEval.png
Affichages : 357
Taille : 92,0 Ko

    Et comme vous voyez, le formulaire Evaluation ne s'affiche pas comme je le désire, c'est à dire dans le MdiParent, à côté du Menu...

    Je pourrais faire ca avec un MenuStrip ou un ToolStrip, mais je trouve que c'est bcp plus visuel avec un formulaire et des contrôles faits "maison". Mais je bloque là dessus... xD

  4. #4
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    Arf

    En fait le code est "assez" juste, c'est juste que j'ai mal réfléchi à l'ordre dans lequel se font les choses ; je m'explique:

    À la création du formulaire principal (dans son constructeur donc), on instancie MenuEval (ligne16 de ton premier extrait)
    Donc on passe dans le constructeur de frmMenuEvaluation et là on instancie RemplirEval (ligne 17 de ton second extrait) puis on affecte son MdiParent avec le MdiParent de l'instance courante (donc du MenuEval que l'on est en train de construire)
    Sauf qu'à ce moment là on a pas encore affecté le MdiParent du MenuEval car il ne sera fait qu'à la sortie du constructeur quand on sera revenu dans le code principal (ligne 17 du premier extrait)
    Donc il vaut null et c'est cette valeur que prend RemplirEval.MdiParent d'où le souci.

    Pour résoudre ce souci, il faut soit affecter le MdiParent en dehors du constructeur (par exemple dans l'évènement Load des formulaires), on peut aussi passer le Formulaire parent comme argument du constructeur.

    Cordialement !

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 21
    Par défaut
    En effet, c'est moi qui avait fait une erreur de codage. Tu avais vu juste. pour corriger ce probleme j'ai regroupé le code comme ceci:


    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
    33
    34
    35
    36
     
    namespace T1_UIL_EvalEleves
    {
        public partial class frmMenuEvaluation : Form
        {
            #region Champs d'instances de formulaires
     
            private frmRemplirEvaluation RemplirEval = null;
     
     
            #endregion
     
            #region Module de méthodes et évènements pour le redimensionnement et l'affichage du formulaire RemplirEvaluation
     
                //Méthode pour l'affichage du formulaire RemplirEvaluation
                    public void AffichageRemplirEval()
                    {
                        this.RemplirEval = new frmRemplirEvaluation();
                        this.RemplirEval.MdiParent = this.MdiParent;
                        this.RemplirEval.Show();
                    }
     
            #endregion
     
            public frmMenuEvaluation()
            {
                InitializeComponent();
     
            }
     
            private void btnRemplirEvaluation_Click(object sender, EventArgs e)
            {
                this.AffichageRemplirEval();
            }
        }
    }
    j'ai créé une méthode qui regroupe la création de l'instance du formulaire RemplirEvaluation, l'affectation de son parent et l'affichage tu formulaire. Ensuite, je n'ai eu plus qu'à inclure la méthode dans l'évènement Click et le tour est joué :-)


    Merci encore pour ton aide ;-)

Discussions similaires

  1. [AC-2003] Ajouter un élément dans une liste depuis un autre formulaire
    Par fonfek24 dans le forum IHM
    Réponses: 5
    Dernier message: 04/07/2011, 15h35
  2. Réponses: 2
    Dernier message: 15/07/2010, 11h07
  3. Réponses: 1
    Dernier message: 11/10/2008, 10h22
  4. [DOM] Recuperer l'index d'un noeud dans sont parent (DOM)
    Par Dougui_bzh dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 10/07/2008, 09h21
  5. Réponses: 4
    Dernier message: 01/10/2005, 17h59

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