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 :

Comment afficher un form une seule fois


Sujet :

C#

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 16
    Points : 13
    Points
    13
    Par défaut Comment afficher un form une seule fois
    Bonjour,
    je débute en C# alors j'ai un problème quand je clique sur le bouton n fois le formulaire s'affiche n fois ,donc je veut comment le formulaire se crée une seule fois non plusieurs et voila le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       private void button1_Click(object sender, EventArgs e)
            { 
                Form3 f3 = new Form3();
                f3.Show();
            }
    et merci .

  2. #2
    Membre expérimenté Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Morbihan (Bretagne)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Points : 1 732
    Points
    1 732
    Par défaut
    La comme ca de suite, avec si peu d'info, je vois deux solutions :
    - Tu fais de ton Form3 un singleton.
    - Tu fais de ta variable f3 un attribut de ta classe.

  3. #3
    Membre éclairé Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588
    Points : 735
    Points
    735
    Par défaut
    comme ctxnop a dit, en plus tu t'abonnes à événement Closed de ta form pour remetre la variable de classe à null;

    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
     
    private Form3 m_form3 ;
     
    private void button1_Click(object sender, EventArgs e)
            {
                if (m_form3 == null)
                {
                    m_form3 = new Form3();
                    m_form3.FormClosed += new FormClosedEventHandler(m_form3_FormClosed);
                    m_form3.Show();
                }            
     
            }
     
            private void m_form3_FormClosed(object sender, FormClosedEventArgs e)
            {
                m_form3 = null;
            }

  4. #4
    Membre émérite
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Points : 2 424
    Points
    2 424
    Par défaut
    tu peut utilise le table de forms de ton application.
    il y'a un tableau au il est inscrite toutes les forms ouvertes dans votre application si il existe ne la relance pas mais tu la maximise si il est minimise ou l'active .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    using System.Windows.Forms;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
     
        foreach (Form h in System.Windows.Forms.Application.OpenForms)
        {
           if (h.Text  == "tonfrom")
             {
                                System.Windows.Forms.Application.OpenForms["tonfrom"].Activate ();
                              break;
              }
         }
    soit tu teste sur la Text ou Name......

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    merci pour vos réponses mais ca ne marche pas désoler aucun résultat ,voila le code j'ai essaye ca :
    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
    namespace WindowsFormsApplication4
    {
        public partial class Form1 : Form
        {
            public Form2 f2;
            public Form1()
            {
                InitializeComponent();
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                foreach (Form h in System.Windows.Forms.Application.OpenForms)
                    {
                        if (h.Text == "Form2")
                        {
                            System.Windows.Forms.Application.OpenForms["Form2"].Activate();
                            break;
                        }
                        else
                        {
                            f2 =new  Form2();
                            f2.Show();
                            break;
                        }
                        }
                }
            }
     
        }

  6. #6
    Membre émérite
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Points : 2 424
    Points
    2 424
    Par défaut
    avant le lancement de form3

    il faut définie l'attribut text

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    f2 =new  Form2();
    f2.Text="Form2"
     f2.Show();

  7. #7
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    ca ne marche pas ,quand je clique sur le bouton un autre formulaire s'affiche

  8. #8
    Membre éclairé Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588
    Points : 735
    Points
    735
    Par défaut
    ce que je t'ai mis ça ne marche pas?

  9. #9
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    il y a un erreur dans votre code ,cette méthode dans la 2 eme formulaire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      private void m_form3_FormClosed(object sender, FormClosedEventArgs e)
            {
                m_form3 = null;
            }

  10. #10
    Membre émérite
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Points : 2 424
    Points
    2 424
    Par défaut
    t'a un hyper faute dans ton code

    namespace WindowsFormsApplication4
    {
    public partial class Form1 : Form
    {
    public Form2 f2;
    public Form1()
    {
    InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
    foreach (Form h in System.Windows.Forms.Application.OpenForms)
    {
    if (h.Text == "Form2")
    {
    System.Windows.Forms.Application.OpenForms["Form2"].Activate();
    break;
    }
    else
    {
    f2 =new Form2();
    f2.Show();
    break;
    }
    }
    }
    }

    }
    essai ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    bool trouve=fasle;
    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
     
     foreach (Form h in System.Windows.Forms.Application.OpenForms)
                    {
                            if (h.Text == "Form2")
                           {
                              trouve=true;
                              break;
                           }
     
                     }
                if (trouve == false )
     
                 {
                            f2 =new  Form2();
                            f2.Show();
                            break;
                 }
                else
     
                {
                System.Windows.Forms.Application.OpenForms["Form2"].Activate();
                }
    car dans ton code tu teste seulement sur la 1 ere itération ..

  11. #11
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 16
    Points : 13
    Points
    13
    Par défaut
    merci mon ami pour votre aide ,enfin le code est correcte un grand merci pour vous.

  12. #12
    Membre émérite
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Points : 2 424
    Points
    2 424
    Par défaut
    merci de click sur

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

Discussions similaires

  1. :35:14 | comment animer flash qu'une seule fois?
    Par jlcollet dans le forum Dreamweaver
    Réponses: 1
    Dernier message: 24/05/2009, 18h11
  2. [VB.NET] Activer une form une seul fois
    Par BenoitM dans le forum Windows Forms
    Réponses: 4
    Dernier message: 14/02/2006, 14h44
  3. [IDE]Comment télécharger VS2005 Express une seule fois?
    Par zamine81 dans le forum EDI/Outils
    Réponses: 2
    Dernier message: 05/01/2006, 18h14

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