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 :

Load toutes les forms


Sujet :

C#

  1. #1
    Membre averti
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2011
    Messages
    19
    Détails du profil
    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2011
    Messages : 19
    Par défaut Load toutes les forms
    Salut tout le monde,

    J'utilise Visual Studio C# Express 2010.

    Depuis un certain temps de cherche mais ne trouve le moyen de load
    toutes les forms de mon projet, je m'explique...

    Je lance mon projet et j'ai donc une fenêtre principale.
    Ensuite, je vais dans un MenuStrip où se trouve plusieurs forms.
    Quand je clique sur l'une des forms, la form se charge mais son
    contenu s'affiche plus tard.
    Vous aller me dire que c'est normal et je suis tout à fait d'accord.
    Mais mon soucis est que je n'ai toujours pas trouvé de solution pour
    load toutes les forms lorsque je lance le programme afin que lorsque
    quand je clique sur une de mes forms dans le MenuStrip le contenu
    s'affiche en même temps que la form.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 8
    Par défaut Load forms
    Salut,

    Si je comprend bien, tu charge ta form principale dans le main avec :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }

    C'est ce qui est créé par défaut quand crée un nouveau projet. A partir de là pour accélérer le démarrage de tes autres forms tu les instancies dans le constructeur de la première Form puis tu les rend invisibles.

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                Form2 myForm2 = new Form2(); 
                myForm2.Visible = false;
     
                Form3 myForm3 = new Form3();
                myForm3.Visible = false;

    Lorsque tu cliques dans ton menu form tu n'a plus qu'à les rendre visible ou pas.

    J'espère que ça a pu t'aider. A+

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    .visible = false n'est pas utile, c'est le cas par défaut

    sinon il nous faudrait plus de détails sur ce que tu veux améliorer
    il y a plusieurs choses à distinguer

    un programme .net est compilé à chaque exécution, et au fur et à mesure de l'utilisation des morceaux du programme. ainsi la 1ère ouverture d'un form sera toujours plus lente que l'ouverture des futures instances du même form
    une des solutions peut etre d'instancier chaque form au démarrage et éventuellement de les détruire dans la foulée, ou utiliser ngen qui compile une fois pour toute l'application sur le poste

    si on affiche des données dans un form, et que ces données prennent du temps à être acquises il peut etre judicieux de charger ses données avant, et le form irait piocher dans les données en cache

    dans les 2 cas il est conseillé d'utiliser du multithreading, ca évite que l'interface fige, et ca gagne réellement du temps car plusieurs sont choses sont faites en même temps
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juin 2011
    Messages : 8
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    dans les 2 cas il est conseillé d'utiliser du multithreading, ca évite que l'interface fige, et ca gagne réellement du temps car plusieurs sont choses sont faites en même temps
    Ou les backgroundworker. C'est assez simple d'utilisation.

  5. #5
    Membre averti
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2011
    Messages
    19
    Détails du profil
    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2011
    Messages : 19
    Par défaut
    Voilà je vous poste mon code dans lequel j'avais essayé de load toutes mes forms à l'exécution du projet. Mais lors de l'appel, par exemple, de la form2, le contenu de la form2 s'affiche après l'affichage de la form2.

    Que faire ?

    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
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
     
    namespace WindowsFormsApplication1
    {    
        public partial class Form1 : Form
        {
            private Form2 forme2 = null;// declaration variable form
            private Form3 forme3 = null;// declaration variable form
     
            public Form1()
            {
                InitializeComponent();
            }
     
            public void Form1_Load(object sender, EventArgs e)
            {            
                 forme2 = new Form2();//instansiation dans le load
                 forme3 = new Form3();// instansiation dans le load
            }
     
            private void inscriptionToolStripMenuItem1_Click(object sender, EventArgs e)
            {
                forme2.ShowDialog();// affichage de la form déjà loaded            
            }
     
            private void codesPostauxToolStripMenuItem_Click(object sender, EventArgs e)
            {
                forme3.ShowDialog();// affichage de la form déjà loaded        
            }
        }
    }

  6. #6
    Membre averti
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2011
    Messages
    19
    Détails du profil
    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2011
    Messages : 19
    Par défaut
    Visual Studio Express 2010 C# mode Windows form

    Je m'explique :

    J'ai une form1 principale et sur cette form1, il y a un MenuStrip.
    Lorsque je vais dans le MenuStrip, je clique sur "Inscriptions" et dès lors
    j'appelle une nouvelle form2 qui apparait.
    Le problème est que le contenu de la form2 (c'est à dire, combobox, textbox,...)
    ne s'affiche pas en même temps qu'à l'affichage de la form2.
    Je voudrais donc que le contenu de la form2 s'affiche en même temps qu'à l'affichage de la form2.

    Je poste mon code, comme ça ce sera plus clair : Ceci était pour moi un solution mais quand je clique sur "Inscriptions" dans le MenuStrip, le contenu de la form2 s'affiche toujours avec un temps de retard...

    Que faire ?


    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
     
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
     
    namespace WindowsFormsApplication1
    {    
        public partial class Form1 : Form
        {
            private Form2 forme2 = null;// declaration variable form
            private Form3 forme3 = null;// declaration variable form
     
            public Form1()
            {
                InitializeComponent();
            }
     
            public void Form1_Load(object sender, EventArgs e)
            {            
                 forme2 = new Form2();//instansiation dans le load
                 forme3 = new Form3();// instansiation dans le load
            }
     
            private void inscriptionToolStripMenuItem1_Click(object sender, EventArgs e)
            {
                forme2.ShowDialog();// affichage de la form déjà loaded            
            }
     
            private void codesPostauxToolStripMenuItem_Click(object sender, EventArgs e)
            {
                forme3.ShowDialog();// affichage de la form déjà loaded        
            }
        }
    }

  7. #7
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    as tu des données qui viennent d'une base de données ?
    à quel moment charges-tu les données sur le constructeur ? sur l'évènement load ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Membre averti
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2011
    Messages
    19
    Détails du profil
    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2011
    Messages : 19
    Par défaut
    Oui c'est ça, la form2 ou la form3 que j'appelle affiche des données d'une base de données qui se chargent dans la Form2_load et la Form3_load.

    Voici le code :

    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
     
    private void Form3_Load(object sender, EventArgs e)
            {
                MySqlConnection con = new MySqlConnection(connexion);
                MySqlCommand command = con.CreateCommand();
     
                try
                {
                    command.CommandText = "SELECT distinct(localite) FROM codes_postaux";
                    con.Open();
                    MySqlDataReader reader = command.ExecuteReader();
     
                    while (reader.Read())
                    {
                        comboBox1.Items.Add(reader["localite"].ToString());
                    }
     
                    con.Close();
                }
     
                catch (Exception ex)
                {
                    MessageBox.Show("Erreur 1: " + ex.Message);
                }

  9. #9
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    charge tes données dans le constructeur plutot, et dans ce cas la pré instanciation fera son effet
    l'évènement load n'est déclenché qu'après show/showdialog
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  10. #10
    Membre averti
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2011
    Messages
    19
    Détails du profil
    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2011
    Messages : 19
    Par défaut
    Ok, je vais tester ça Pol63.

    Déjà merci pour votre aide à tous

  11. #11
    Membre averti
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2011
    Messages
    19
    Détails du profil
    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2011
    Messages : 19
    Par défaut
    OK, ça s'affiche finalement en même temps avec ta solution Pol63.

    Merci à toi et tous les autres qui se sont intéressés à mon problème

    Reste plus qu'à savoir comment mettre ce poste résolu lol

  12. #12
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Salut,

    Citation Envoyé par Device01
    Reste plus qu'à savoir comment mettre ce poste résolu lol
    Avec le Bouton en bas de page

  13. #13
    Membre averti
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2011
    Messages
    19
    Détails du profil
    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2011
    Messages : 19
    Par défaut
    Ok je viens de le voir.

    Merci et surement @+ pour de nouvelles aventures

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

Discussions similaires

  1. Lister toutes les forms d'une application
    Par Aspic dans le forum Windows Forms
    Réponses: 15
    Dernier message: 01/12/2007, 21h22
  2. variable globle pour toutes les forms
    Par ryoussef19 dans le forum C++/CLI
    Réponses: 3
    Dernier message: 01/08/2007, 16h43
  3. Modifier les alias sur toutes les form
    Par mozcity dans le forum Bases de données
    Réponses: 2
    Dernier message: 06/10/2006, 08h08

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