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 :

Splash Screen avant Application.run


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2004
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 224
    Points : 78
    Points
    78
    Par défaut Splash Screen avant Application.run
    Bonjour,
    j'aimerais s'il est possible (et sur) de lancer un splash screen avant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Run(new MyForm());
    En effet, j'ai vu qu'il était recommandé d'afficher un splash screen après mais c'est justement cette méthode qui est très longue à exécuter pour ma part. L'idéal étant que le splash screen soit exécuté le plus tôt possible.

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    salut

    vas regarder sur codeproject.com, il y a quelques exemples en .Net de réalisation de splashScreen et en faisant une recherche google, tu en trouveras
    aussi un certain nombre couvrant je pense tes besoins
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    au lieu de faire application.run(new myform())
    tu fais un application.run de ton form de splashscreen
    puis dans ce form tu instancie new myform et une fois que son chargement est fini, tu dispose ton splashscreen et tu rends l'autre visible
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre averti 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 : 44
    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
    Points : 428
    Points
    428
    Par défaut
    tu fais un application.run de ton form de splashscreen
    puis dans ce form tu instancie new myform et une fois que son chargement est fini, tu dispose ton splashscreen et tu rends l'autre visible
    à mon avis ça va provoquer l'arrêt de ton application si tu fais ça.

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    su le projet est bien paramétré sur "arret de l'application à la fermeture du dernier form" y aura pas de soucis
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre averti 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 : 44
    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
    Points : 428
    Points
    428
    Par défaut
    je me trompe peut être , mais c'est une option qui n'existe quand dans vb.net il me semble.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Août 2004
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 224
    Points : 78
    Points
    78
    Par défaut
    Voici la solution que j'ai adopté pour ceux que ça intéresse (inspiré d'un projet de codeproject.com).
    J'ai créé deux méthodes static

    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
     
    internal static SplashScreen Instance = null;    //La Form  à afficher
    public static void AfficherSplash()
            {
                if (Instance == null)
                {
                    Instance = new SplashSreen(); 
     
                    Instance.TopMost = true;
                    Instance.ShowInTaskbar = false;
                    Instance.StartPosition = FormStartPosition.CenterScreen;
                    Instance.MaximizeBox = false;
                    Instance.MinimizeBox = false;
                    Instance.ControlBox = false;
                    Instance.Show();
     
                    //Process the initial paint events
                    Application.DoEvents();
                    Instance.Opacity = 1;
                }
            }
     
    public static void CloseSplash()
            {
                //	Only fadeout if we are currently visible.
                if (Instance != null)
                {
                    Instance.BeginInvoke(new MethodInvoker(Instance.Close));
     
                    //Process the Close Message on the Splash Thread.
                    Application.DoEvents();
                }
            }
    J'appelle ensuite AfficherSplash() juste après
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    dans le main, donc le splashScreen est affiché presque instantanément, et surtout, avant Application.run et donc avant le InitializeComponent qui est la méthode qui me prend le plus de temps.

    Ensuite il reste à appeler CloseSplash() à la fin de l'évenement Load de ma frame principale.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/09/2010, 22h58
  2. ferme le splash screen dès que l'application s'ouvre
    Par philippe13 dans le forum Agents de placement/Fenêtres
    Réponses: 7
    Dernier message: 17/11/2008, 07h52
  3. Comment faire un splash screen pour son application?
    Par tscoops dans le forum C++Builder
    Réponses: 4
    Dernier message: 26/04/2007, 14h28
  4. Réponses: 1
    Dernier message: 26/10/2006, 21h10
  5. [C#]Fenetre de chargement avant Application.run()
    Par 5:35pm dans le forum Windows Forms
    Réponses: 3
    Dernier message: 05/05/2006, 03h02

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