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

Windows Forms Discussion :

Création d'une winform avec menu


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 70
    Points : 48
    Points
    48
    Par défaut Création d'une winform avec menu
    Voila donc je commence un nouveau projet dans lequel je doit pouvoir modifier une base de donnée ... j'aimerai savoir lors de la création de la winform si je dois en créer plusieurs ,un pour chaque option de mon menu ,en parlant de menu j'aimerai savoir si il y a un moyen de le faire hérité à chaque fenêtre ou si je doit le refaire pour tous ,ou peu etre me suffi-t-il de ne pas changer le nom et de le copier ...
    Merci..

  2. #2
    Expert éminent 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
    Points : 7 903
    Points
    7 903
    Par défaut
    savoir lors de la création de la winform si je dois en créer plusieurs ,un pour chaque option de mon menu
    Il n'y a pas de choix impératif : une fom peut-être associée à une option ou à plusieurs options.
    j'aimerai savoir si il y a un moyen de le faire hérité à chaque fenêtre ou si je doit le refaire pour tous ,ou peu etre me suffi-t-il de ne pas changer le nom et de le copier ...
    Une solution simple consiste à garder le menu dans la forme principale et à transférer à la forme principale les controls des formes secondaires liés aux options. Pour l'implémentation, on crée en conception dans chaque forme secondaire un Panel (Dock=Fill) qui contient tous les controls de la forme. En exécution lorsque l'option est activée, on crée la forme (sans la montrer) et transfère ce panel sur la forme pricipale en changeant sa propriété parent.
    Lorsque la forme est fermée. Lorsqu'on change d'option, on remet le panneau à sa place dans la forme secondaire.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 70
    Points : 48
    Points
    48
    Par défaut re
    donc il me suffirait de créer un panel dans chaque page ? est-ce cela ?
    et créer le menu dans un UserControl , mais ensuite comment l'appeler ?

  4. #4
    Expert éminent 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
    Points : 7 903
    Points
    7 903
    Par défaut
    Nan,
    tu crées une forme principale avec seulement le menu.
    et des formes secondaires avec chacune un Panel qui prend toute la forme et contient tous ses controls.

    Il suffit de transférer quand on active une option un dee ces panels dans la forme principale sous les menu.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 70
    Points : 48
    Points
    48
    Par défaut
    je ne saisie pas dsl ,mais si j'ai bien compris
    donc je ne fait pas appelle à des form mais à je les affiche dans un panel ?

  6. #6
    Expert éminent 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
    Points : 7 903
    Points
    7 903
    Par défaut
    Tu conçois tes forms secondaires comme si elles devaient s'éxécuter comme des formes distinctes de la forme principale.
    Et, en exécution, au lieu de faire un Show des form, tu "déplaces" le panneau qui contient les controls vers la forme principale.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 70
    Points : 48
    Points
    48
    Par défaut
    Très bien je pense avoir compris et je vais testé la chose . Merci

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 70
    Points : 48
    Points
    48
    Par défaut
    Je n'arrive pas à avoir quelque chose de concluant et je ne vois toujours pas la chose.

    d'ailleurs je ne sait toujours pas si il est mieux que quand je choisi dans mon menu une page si je fait venir la page en incluant un même menu ou si je fait simplement venir le contenu d'un panel dans le panel principal panel.

  9. #9
    Expert éminent 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
    Points : 7 903
    Points
    7 903
    Par défaut
    Divise la forme principale en 2 parties:
    - le menu en Dock=Top,
    - un Panel d'acceuil en Dock=Fill,
    Ainsi le menu sera toujours visible.

    Et déplace les panels des form Secondaires vers la forme principale en faisant en sorte que :
    FormSecondaire.LePanelDeLeFormeSecondaire.Parent = FormPrincipale.LePanelAcceuil

    Attention, en conception : quand on change la propriété Dock d'un control, il est parfois necessaire de faire un BringToFront du control (click droit sur le controle => menu pop-up).
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 70
    Points : 48
    Points
    48
    Par défaut
    J'avais penser à le faire de cette manière et j'ai mis dans mon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ajoutToolStripMenuItem_Click () : 
     
    FormAjout.panelajout = FormGestion.panel1
    Mais dès que j'inscrit le FormAjout il ne me trouve pas automatiquement le panel et je recoit comme erreur

    Erreur 1 Une référence d'objet est requise pour la propriété, la méthode ou le champ non statique 'Gestion.FormAjout.panelajout'

  11. #11
    Expert éminent 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
    Points : 7 903
    Points
    7 903
    Par défaut
    Ce qu'il dfaut faire c'est :
    FormAjout.panelajout.Parent = FormGestion.panel1
    Mais comme panelajout n'est pas "public", il faur passer par une fonction public de FormAjout.
    Crée dans FormAjout une fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    internal void SetPanelAjoutParent(Control ParentControl) 
    {
      panelajout.Parent = ParentControl ;
    }
    et appele-la ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Gestion.FormAjout.SetPanelAjoutParent(FormGestion.panel1)
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 70
    Points : 48
    Points
    48
    Par défaut
    J'ai toujours 2 erreur à la compilation qui me demande une référence d'objet

    Erreur 2 Une référence d'objet est requise pour la propriété, la méthode ou le champ non statique 'Gestion.FormGestion.panel1'
    Erreur 3 Une référence d'objet est requise pour la propriété, la méthode ou le champ non statique 'Gestion.FormAjout.SetPanelAjoutParent(System.Windows.Forms.Control)'

  13. #13
    Expert éminent 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
    Points : 7 903
    Points
    7 903
    Par défaut
    les controls ne sont pas publics, il faut donc crééer des fonctions ou des properties "public" ou "internal" dans les Form pour y accéder.

    Gestion doit contenir une instance "public" ou "internal" de la classe de ton formulaire d'ajout.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 70
    Points : 48
    Points
    48
    Par défaut
    dois-je utiliser un constructeur par copie ou ca n'a rien à voir ?...

  15. #15
    Expert éminent 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
    Points : 7 903
    Points
    7 903
    Par défaut
    Tu dois créer des uinstances de chaque forme secondaire :
    • soit dès que tu as besoin d'une form pour exécuter une option du menu,
    • soit au début si tu conserve ces instances (ce qui est mieux).
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  16. #16
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 175
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 175
    Points : 1 767
    Points
    1 767
    Par défaut
    Bonjour.

    Graffito, une question de curiosité :
    Pourquoi ne pas attacher directement la form contenant le panel à la form principale ?

    En attachant directement la form secondaire dans la form principale, pas besoin de panel et tu peux en plus assez simplement donner la possibilité à l'utilisateur de détacher la form secondaire (fonctionnalité assez sympa dans certains cas).

    Cdt.
    Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.

  17. #17
    Expert éminent 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
    Points : 7 903
    Points
    7 903
    Par défaut
    attacher directement la form contenant le panel à la form principale ?
    Comment ferais-tu (en dehors d'une technique MDI) ?
    J'ai peut-être loupé un truc plus simple que le transfert de panels .

    J'utilise systématiquement la possibilité de détachement dans les TabControl, mais la aussi je fais des transferts de panel!

    PS : j'ai trouvé cette solution dans une discussion sur le site Je vais tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    FormQueJeVeuxInclure MyForm = new FormQueJeVeuxInclure();
    MyForm.TopLevel = false;
    MyForm.FormBorderStyle = FormBorderStyle.None;
    MyForm.Parent = MyPanel;
    MyForm.Top = 0; // probalement inutile
    MyForm.Left = 0; // probalement inutile
    MyForm.Size = MyPanel.ClientSize; // probalement inutile
    MyForm.Dock = DockStyle.Fill;
    MyForm.BringToFront(); // peut-être inutile
    MyForm.Show();
    En fait, ca évite juste de mettre un Panel général dans la forme secondaire et la propriété permettant d'y accéder.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  18. #18
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 175
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 175
    Points : 1 767
    Points
    1 767
    Par défaut
    Bonjour.

    Citation Envoyé par Graffito Voir le message
    Comment ferais-tu (en dehors d'une technique MDI) ?
    J'ai peut-être loupé un truc plus simple que le transfert de panels .
    Et bien, une form, ça n'est jamais qu'un control, donc comme tout control, tu peux simplement l'ajouter aux controls de la form principales avec un .Controls.Add (en prenant soin de mettre le toplevel à false pour la form à attacher).

    Cdt.
    Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 70
    Points : 48
    Points
    48
    Par défaut
    Ayant dû laisser cette discutions de côté afin d'avancer ,je ne suis plus et je n'arrive pas à un résultat satisfaisant encore ... (même si c'est moi le vrai problème).
    Que veut-tu dire par attacher le panel à la form principal ?

  20. #20
    Expert éminent 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
    Points : 7 903
    Points
    7 903
    Par défaut
    Que veut-tu dire par attacher le panel à la form principal ?
    Modifier la propriété Parent du Panel pour en faire un des "fils" d'un Control (Panel, TabPage, ...) de la form principale.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/10/2010, 11h37
  2. Création d'une DLL avec une Winform
    Par megamario dans le forum C#
    Réponses: 6
    Dernier message: 15/04/2010, 16h58
  3. Création d'une table avec foreign key
    Par lepierre dans le forum Langage SQL
    Réponses: 5
    Dernier message: 17/09/2004, 14h20
  4. [Débutante] Création d'une image avec un composant
    Par gwendo dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 09/07/2004, 09h58
  5. Création d'une base avec IbConsole
    Par Lucien dans le forum Outils
    Réponses: 3
    Dernier message: 02/03/2004, 18h34

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