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 :

[C#] Comment creer un splash screen en thread


Sujet :

Windows Forms

  1. #1
    Membre éclairé Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 75

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Par défaut [C#] Comment creer un splash screen en thread
    Bonjour

    actuellement mon appli demmare comme ca

    Code : 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 FMain());
            }
    mais elle mets du temps a s afficher
    Je voudrais creer un splashscreen avant le démarrage de ma main et le détruire quand tou est affiché,

    comment coder ça, et OU, et comment le coder dans un thread séparé

    merci

  2. #2
    Membre éclairé Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 75

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Par défaut
    je fais ca dans le main

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            private FSplash aSplash;
     
            public FMain()
            {
                aSplash = new FSplash();
                aSplash.Show();
     
               InitializeComponent();
    la splash s affiche bien, mais dedans y a un gif annimé, mais celui ci ne demarre pas a l ouverture de la splash, mais quand la main est chargée

    comment faire pour que mon gif annimé demarre a l ouverture de la splash ??

    sous delphi y a Application.ProcessMessage

    mais la je ne sais pas

  3. #3
    Membre éclairé Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 75

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Par défaut
    je fais 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
            private FSplash aSplash;
     
            public FMain()
            {
     
                // Déclaration du thread
                Thread myThread;
     
                // Instanciation du thread, on spécifie dans le
                 myThread = new Thread(new ThreadStart(ThreadLoop));
     
                // Lancement du thread
                myThread.Start();
    .....
    puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            private void ThreadLoop()
            {
               aSplash = new FSplash();
               aSplash.Show();
            }
    la fenetre s affiche et disparrait aussitot

    ou est le pb ?

  4. #4
    Membre expérimenté Avatar de toniolol
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2005
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 281
    Par défaut
    Question bête mais tu es sous VS2003 ou 2005 ?
    Car sous 2005 c'est intégré dans les propriétés du projet.

  5. #5
    Membre éclairé Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 75

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Par défaut
    Suis sous 2005,

    cad intégré ??
    je debutes en C#

  6. #6
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Par défaut
    Citation Envoyé par Cazaux-Moutou-Philippe
    sous delphi y a Application.ProcessMessage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Application.DoEvents()
    mais bon je te conseil le thread.

    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
     
     
    private static Thread t;
     
    public static Thread SplashT
    {
         get
         {
            return t;
         }
    }
     
    public static void Main(string[] args)
    {
        t = new Thread(new ThreadStart(SplashThread));
        t.Start();
     
       //etc etc 
    }
     
    private static void SplashThread()
    {
        SplashForm sf = new SplashForm();
        sf.ShowDialog();
    }
    et dans ton Load de ta form principale tu fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MainClass.SplashT.Abort();
    c'est un peu bourrin comme méthode d'arret du thread mais ça marche. Tu peux refléchissant un peu améliorer la chose pour que le thread se finisse tranquillement tout seul .

  7. #7
    Membre expérimenté Avatar de toniolol
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2005
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 281
    Par défaut
    Je n'ai que VB Express 2005 mais ça doit être pareil :
    Menu Projet puis Proprétés de ...
    Ensuite c'est dans l'onglet Application en bas il y a une combo Ecran de démarrage et tu sélectionnes la forme voulue.

  8. #8
    Membre éclairé Avatar de Cazaux-Moutou-Philippe
    Inscrit en
    Mai 2005
    Messages
    674
    Détails du profil
    Informations personnelles :
    Âge : 75

    Informations forums :
    Inscription : Mai 2005
    Messages : 674
    Par défaut
    Merci a tou

    voici ce que je fais

    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
         private FAbout aFAbout;
            private delegate void DisposeSplashCallback();
     
            public FMain()
            {
                this.Hide();
     
                // Déclaration du thread
                Thread myThread;
     
                // Instanciation du thread, on spécifie dans le 
                myThread = new Thread(new ThreadStart(ThreadLoop));
     
                // Lancement du thread
                myThread.Start();
     
              ..................
     
     
                Thread.Sleep(2000);
     
                this.Show();
                DiposeSplash();
     
            }
    puis

    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
            private void ThreadLoop()
            {
                aFAbout = new FAbout();
                aFAbout.ShowDialog();
            }
     
            private void DiposeSplash()
            {
                if (aFAbout.InvokeRequired)
                {
                    DisposeSplashCallback d =
                        new DisposeSplashCallback(DiposeSplash);
                    aFAbout.Invoke(d);
                }
                else
                {
                    aFAbout.Dispose();
                }
            }
    est ce bon ??

  9. #9
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Par défaut
    Citation Envoyé par toniolol
    Je n'ai que VB Express 2005 mais ça doit être pareil :
    Menu Projet puis Proprétés de ...
    Ensuite c'est dans l'onglet Application en bas il y a une combo Ecran de démarrage et tu sélectionnes la forme voulue.

    tu ne parles absolument pas de la même chose que lui ...
    ta manip permet de spécifier le point d'entrée de l'application dans le cas ou plusieurs classes définiraient la fonction public static void Main(string[] args). En aucun cela permet de faire un splash screen ...

    donc reste la méthode du thread avec un ShowDialog() pour pas sortir du thread juste après l'afichage du formulaire et ainsi faire disparaitre la fenetre car les ressources du thread sont nettoyés.

  10. #10
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Par défaut
    Citation Envoyé par Cazaux-Moutou-Philippe
    est ce bon ??
    ça m'a l'air nickel ça

  11. #11
    Membre expérimenté Avatar de toniolol
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2005
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 281
    Par défaut
    Désolé je n'ai pas le temps d'installer C# express mais voici un imprim écran de ce que je vous ai dit précédement :

    Citation Envoyé par dev01
    ta manip permet de spécifier le point d'entrée de l'application dans le cas ou plusieurs classes définiraient la fonction public static void
    1er cercle (enfin qui s'y apparente )
    Citation Envoyé par dev01
    En aucun cela permet de faire un splash screen ...
    2ème cercle.



    Ca n'existe pas sous C# Express ?
    Si tel est le cas ça signifie que les VBistes nous sommes plus fénéants !

  12. #12
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Par défaut
    Citation Envoyé par toniolol
    Si tel est le cas ça signifie que les VBistes nous sommes plus fénéants !
    désolé , en effet il n'y a pas ça sous VS 2005 Pro. (en tout cas pas sur un projet C# .

    et je confirme les VBistes sont plus fénéants que les autres

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

Discussions similaires

  1. Comment faire un splash screen ?
    Par moukah2 dans le forum Débuter
    Réponses: 3
    Dernier message: 17/12/2007, 08h55
  2. Comment faire un splash screen pour son application?
    Par tscoops dans le forum C++Builder
    Réponses: 4
    Dernier message: 26/04/2007, 14h28
  3. comment configurer un splash screen
    Par pierrot67 dans le forum Delphi
    Réponses: 2
    Dernier message: 15/10/2006, 10h20
  4. comment installer un splash Screen
    Par le lynx dans le forum IHM
    Réponses: 2
    Dernier message: 14/06/2006, 09h29
  5. [wxPython] Creer un splash screen
    Par hysah dans le forum wxPython
    Réponses: 6
    Dernier message: 28/02/2006, 09h10

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