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 :

FormParent et FormChild


Sujet :

C#

  1. #1
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2008
    Messages : 26
    Par défaut FormParent et FormChild
    Bonjour, je voudrais ouvrir mes FormEnfant dans une FormParent, mais je ne réussi qu'avec la première FormEnfant, puisqu'elle est ouverte dans la FormParent directement, alors que les autres sont ouvertes depuis la première FormEnfant. si quelqu'un pouvait m'aider se serait vraiment super.

  2. #2
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    Pardon ? tu pourrais être plus clair ?

  3. #3
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2008
    Messages : 26
    Par défaut
    Je voudrais ouvrir une form enfant dans une form parent.

  4. #4
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    J'ai demandé "plus clair" pas moins....
    où se trouve ta fonction d'ouverture ?
    pourquoi tu ouvre une childForm depuis une chilfForm et pas depuis la MainForm ?
    etc....

  5. #5
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2008
    Messages : 26
    Par défaut
    En fait j'ai ma FormParent qui propose deux autres FormEnfant, une avec des resptrictions et l'autre pour administrateur, accessible avec un mot de passe. Les deux s'ouvre donc dans la FormParent, mais dans la FormChild de l'admin 4 boutons proposent des gestion différentes qui ouvrent donc de nouvelles FormChild dans la FormParent.
    Pour ouvrir la prmeière FormChild j'ai simplement indiqué la FormParent :

    Form1 f1 = new Form1();
    f1.MdiParent = this;

    Comment puis-je indiquer dans cette même Form1, que sur un button_Click, j'ai une nouvelle Form qui s'affiche dans la Parent de Form1?

    Je sais pas si c'est plus clair ?...

  6. #6
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    Ben, si tu dois absolument ouvrir une enfant depuis une enfant, du moment que la propriété MdiPartent est assignée, tu n'a qu'à l'utiliser...
    Dans Parent tu as une fonction OuvrirNouvelEnfant()
    et dans l'enfant tu fais MdiPartent.OuvrirNouvelEnfant()...
    C'est ça ton problème ou je suis complètement à côté ?

  7. #7
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2008
    Messages : 26
    Par défaut
    Je pense que ça pourrait m'aider, je vais essayer tout de suite, merci.

  8. #8
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2008
    Messages : 26
    Par défaut
    Comment puis-je faire que la propriété MdiParent soit assigné, est à quoi ça sert? parce que pour l'instant j'ai créée ma fonction Ouvrirenfant(), mais je n'arrive pas à l'enteindre depuis ma FormChild.

  9. #9
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    Excuse-moi, je n'ai pas été assez explicite...
    Dans ta MainForm tu as ta fonction Ouvrirenfant() qui doit être public bien évidemment.
    Quelque part dans ta Form1 (enfant) tu veux ouvrir un nouvel enfant.
    Tu as assigné MainForm à la propriété MdiParent de f1 (Form1).
    Dans le code de Form1 tu dois caster MdiParent de manière à ce que l'on sache qu'il s'agit d'une MainForm. Ca donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ((MainForm).MdiParent).OuvrirEnfant();
    //ou alors
    (MdiParent as MainForm).OuvrirEnfant();
    le tout en admettant que MainForm est le nom de la classe de la form principale

  10. #10
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2008
    Messages : 26
    Par défaut
    C'est super, ça marche comme je le souhaitée, merci beaucoup, j'aurais juste une dernière petite question si possible, dans ma fonction, je mets ce code :

    GestionVeh f1 = new GestionVeh();
    f1.MdiParent = this;
    f1.Show();

    Mais apparement le this lui pose problème, il me mets : Le mot clé 'this' n'est pas valide dans un initialiseur de propriété statique, de méthode statique ou de champ statique. Quel est le problème?

  11. #11
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    Tu exécute ce code dans quelle fonction ???

  12. #12
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2008
    Messages : 26
    Par défaut
    Dans ma fonction OuvrirEnfant(), dans la FormParent.

  13. #13
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    OuvrirEnfant() est déclarée static ?

  14. #14
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2008
    Messages : 26
    Par défaut
    Oui en effet, voila le code :

    public static void OuvrirGestVehi()
    {
    GestionVeh f1 = new GestionVeh();
    f1.MdiParent = this;
    f1.Show();
    }

  15. #15
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    Ben, elle ne peut pas être static !
    Tu fais appel à cette fonction à partir d'une instance de Form1 (f1) et non à partir de la class Form1. Elle n'a aucune raison d'être static !

  16. #16
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2008
    Messages : 26
    Par défaut
    D'acord, mais si je ne met que public void OuvrirGestVehi(), il me met une autre erreur : Une référence d'objet est requise pour la propriété, la méthode ou le champ non statique 'GestionVehicule.MDIParent1.OuvrirGestVehi()'

  17. #17
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    Je ne comprend pas ce que tu bricoles...
    OuvrirGestVehi() doit se trouver dans la class de ta MainForm.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public partial class MainForm: Form //ou un autre nom.....
      {
        public MainForm()
        {
          InitializeComponent();
        }
    .......
        public void OuvrirGestVehi()
        {
          ...
        }
    et dans ta Form1 tu dois avoir qqchose comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public partial class Form1: Form //ou un autre nom.....
      {
        public Form1()
        {
          InitializeComponent();
        }
    .......
        private void button1_Click(object sender, EventArgs e)
        {
          (MdiParent as MainForm).OuvrirGestVehi();
        }

  18. #18
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2008
    Messages : 26
    Par défaut
    C'est bon, j'ai plus aucun soucis. Merci beaucoup pour ton aide. désolé pour toutes ces erreurs qui devaient te paraître évidente, mais faut avouée que je suis vraiment débutante , donc merci encore pour ton aide et ta patience.

  19. #19
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    Pas d'blème ! on a tous été débutant un jour...
    Amuse-toi bien !!

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

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