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 :

Application Run, nom du formulaire


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Chacha35
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 264
    Par défaut Application Run, nom du formulaire
    Bonjour,

    Quand je fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Application.Run(new F_ConsultSearch());
    Je crée un objet formulaire et je l'affiche, mais quel est le nom de cet objet?

  2. #2
    Membre Expert
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Par défaut
    Il n'y a pas de nom de variable, vu que tu ne l'enregistre pas dans une variable, tu l'exécute directement.

    La question serait plutôt : pourquoi as-tu besoin du nom de cet objet ?

    Mais si c'est ton premier formulaire ouvert, tu peux passer par ce code pour le récupérer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.OpenForms[0]
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  3. #3
    Membre éclairé Avatar de Chacha35
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 264
    Par défaut
    En faite, j'ai besoin dans mon second formulaire d'une variable public qui est dans la classe de mon premier formulaire.

    J'aimerai donc faire NomDuForm1.NomVariable pour m'en servir dans le form2.

    Est-il possible de donner un nom à mon formulaire?

  4. #4
    Membre Expert
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Par défaut
    Non, ce n'est pas possible directement.

    Après tu as deux solutions :

    soit tu fais comme je l'ai dit plus haut, en passant par Application.OpenForms[0] depuis ton second formulaire en faisant un cast sur le type du premier formulaire.
    Disons que j'ai Form1 et Form2 pour récupérer l'instance courante de Form1 depuis une méthode de Form2 je ferais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Form1 firstForm = Application.OpenForms[0] as Form1;
    ou pour récupérer une propriété :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((Form1)Application.OpenForms[0]).MyProperty;
    Sinon, le plus simple, si tu n'as besoin que d'une propriété du premier formulaire dans le second, pourquoi ne pas le passer en paramètre du constructeur du second formulaire ?

    Et si cette propriété est amené à changer, tu peux directement passer l'instance du premier formulaire dans le constructeur du second lorsque tu instancie celui-ci.
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  5. #5
    Membre chevronné Avatar de _PascalC_
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Vendée (Pays de la Loire)

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

    Informations forums :
    Inscription : Août 2008
    Messages : 220
    Par défaut
    Salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        static class Program
        {
            public static Form1 MainForm;
     
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                MainForm = new Form1();
                Application.Run(MainForm);
            }
        }
    Tu y accèdes ensuite en passant par Program.MainForm. Mais si comme je le suppose Form2 est créé à partir de Form1 pourquoi ne pas faire comme ceci plutôt :
    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
     
        public partial class Form1 : Form
        {
            public int MaVariable = 0;
     
            public Form1()
            {
                InitializeComponent();
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                Form2 frm = new Form2(this);
                frm.ShowDialog();
                frm.Dispose();
            }
        }
     
        public partial class Form2 : Form
        {
            private Form1 _frm;
     
            public Form2(Form1 frm)
            {
                _frm = frm;
                InitializeComponent();
            }
     
            private void Test()
            {
                _frm.MaVariable = 1234; 
            }
        }

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Par défaut
    Tu peux Utiliser ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public MyForm  m_frmMain = new MyForm();
    ...
    ...
    Application.Run(m_frmMain);

  7. #7
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut
    Citation Envoyé par David Fouejio Voir le message
    Tu peux Utiliser ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public MyForm  m_frmMain = new MyForm();
    ...
    ...
    Application.Run(m_frmMain);
    je vois pas ce que ca change puisque le formulaire 2 est créé ensuite. il n'a pas accès pour autant à m_frmMain.

    ps: faut pas utiliser "m_", c'était déconseillé dans les specs du C#


    la solution la plus propre est celle de _Pascal_
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      Form2 frm = new Form2(this);
    frm.ShowDialog();

  8. #8
    Membre éclairé Avatar de Chacha35
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2009
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 264
    Par défaut
    La solution de _Pascal_ marche trés bien.

    Merci à tous

  9. #9
    Membre émérite
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Par défaut
    Citation Envoyé par Louis-Guillaume Morand Voir le message
    ps: faut pas utiliser "m_", c'était déconseillé dans les specs du C#
    Il n'y a pas que dans les specs que c'est déconseillé

    En passant un champ public c'est aussi déconseillé sauf si il est readonly.

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

Discussions similaires

  1. Application.run avec le nom de la macro complémentaire en paramètre
    Par ckrikri dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/02/2009, 10h57
  2. Réponses: 6
    Dernier message: 06/09/2006, 13h08
  3. nom de formulaire en arabe n'est pas accepter.
    Par hocine dans le forum IHM
    Réponses: 3
    Dernier message: 26/11/2005, 12h25
  4. MDI Application et nom des fenêtres dans le menu
    Par Captain_JS dans le forum C++Builder
    Réponses: 3
    Dernier message: 11/08/2005, 08h26
  5. Réponses: 2
    Dernier message: 29/10/2003, 11h05

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