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 :

Fermeture d'un splash screen après lancement du programme principal


Sujet :

C#

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2005
    Messages : 109
    Points : 88
    Points
    88
    Par défaut Fermeture d'un splash screen après lancement du programme principal
    Bonjour a tous,

    Je suis en train de réaliser une petite application métier comprenant (entre autre un spash screen. J'ai vu pas mal de problème comme le mien, mais je n'arrive pas pour autant a y trouver une solution, c'est pouquoi je vais tenter de vous l'expliquer.

    Mon Splash screen est un winform classique, avec une picture et une progressbar, le traitement et les chargements divers se font dans un second thread, une fois ma progressbar arrivée a terme j'utilise une méthode pour ouvrir le formulaire principal de l'appli (dans le thread principal via un beginInvoke et un delegate), puis je tente de faire un this.Close(); pour fermer le slash screen, cependant celui ci ouvre brièvement l'application principal et me fait l'équivalent d'un Application.Exit();

    Comment résoudre le problème svp? a noter que je fais le code suivant pour lancer le form principal:

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    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;
    using System.Threading;
     
    namespace AndroidStudio
    {
        public partial class loadForm : Form
        {
            private Thread loadingThread;
            private delegate void updateProgressBar(int level, string description);
            private delegate void displayMain();
     
            public loadForm()
            {
                InitializeComponent();
                loadingThread = new Thread(loadIDE);
                loadingThread.Start();
            }
     
            private void loadIDE()
            {
                while (true)
                {
                    if (this.progressLoading.Value + 1 >= this.progressLoading.Maximum)
                    {
                        this.BeginInvoke(new displayMain(displayMainIDE));
                    }
                    else
                    {
                        this.progressLoading.BeginInvoke(new updateProgressBar(setProgress), new object[] { this.progressLoading.Value + 1, "Chargement en cours" });
                        Thread.Sleep(1000);
                    }
                }
            }
     
            private void setProgress(int level, string description)
            {
                progressLoading.Value = level;
                lblInfos.Text = description;
            }
     
            private void btnClose_Click(object sender, EventArgs e)
            {
                if (loadingThread.IsAlive)
                {
                    loadingThread.Abort();
                }
     
                Application.Exit();
            }
     
            private void displayMainIDE()
            {
     
                defaultForm defaultForm = new defaultForm();
                defaultForm.Show();
                loadingThread.Abort();
                this.Close();
            }
     
            private void mainPicture_Click(object sender, EventArgs e)
            {
     
            }
        }
    }
    Merci d'avance...
    Mon blog technique: www.codeyourweb.org
    HTML5 / CSS3 / JS – Intégration des technologies du web a destination des nouvelles plateformes et nouveaux usages d'internet

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2004
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2004
    Messages : 81
    Points : 90
    Points
    90
    Par défaut
    Tu lances directement ton splash screen ? Car si c'est la fenêtre parent de ton application je pense que ton problème peut venir de là.
    Après je suis pas expert winform mais si on ferme la fenêtre mère j'imagine que ça ferme l'application ? Si oui en appelant le spash screen depuis un autre form mère ça réglerai le problème ?

  3. #3
    Membre émérite Avatar de meziantou
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Points : 2 439
    Points
    2 439
    Par défaut
    Si ma mémoire est bonne il faut modifier la fenêtre principale.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.MainForm = taForm;

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2005
    Messages : 109
    Points : 88
    Points
    88
    Par défaut
    le problème c'est que ca implique de devoir lancer un form en invisible qui lance le splash qui lui lance mon formulaire principal qui lui meme en ouvre d'autres...

    de plus une fois que toutes les fenetres sont fermées l'appli tournera toujours étant donné que le formulaire principal est caché :s

    Et malheureusement, après vérification il n'y a pas de Application.mainForm, d'autres possibilités?
    Mon blog technique: www.codeyourweb.org
    HTML5 / CSS3 / JS – Intégration des technologies du web a destination des nouvelles plateformes et nouveaux usages d'internet

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2004
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2004
    Messages : 81
    Points : 90
    Points
    90
    Par défaut
    Suffit de faire passer ta form invisible à visible quand le splash screen se ferme ?

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2005
    Messages : 482
    Points : 625
    Points
    625
    Par défaut
    salut,

    dans ton program.cs, remplace le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Application.Run(new TaForm())
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    TaForm truc = new TaForm();
    truc.ShowDialog();
     
    TaForm2 Machin = new TaForm2();
    Machin.ShowDialog();
    //etc...
    et déclare les éventuelles variables à passer comme argument entre elles directement dans cette classe
    "Essayer est le premier pas vers l'Echec !" (Homer Simpson)

Discussions similaires

  1. Ecran blanc après splash screen
    Par Max67 dans le forum Android
    Réponses: 4
    Dernier message: 19/10/2012, 17h34
  2. Réponses: 3
    Dernier message: 30/06/2010, 12h35
  3. [Batch] Fermeture cmd après lancement d'un exécutable
    Par Iloyo dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 14/04/2010, 11h11
  4. Comment faire un splash screen pour son application?
    Par tscoops dans le forum C++Builder
    Réponses: 4
    Dernier message: 26/04/2007, 14h28
  5. affichage de controles sur un splash screen
    Par shrek dans le forum C++Builder
    Réponses: 3
    Dernier message: 20/11/2003, 19h59

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