VB.Net SplashScreen et Timer Ferme ma Form principale ???

Signaler
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
6 octobre 2012
-
Messages postés
3
Date d'inscription
lundi 11 juin 2012
Statut
Membre
Dernière intervention
6 avril 2013
-
Bonjour à tous...
Je veux utiliser une SplashScreen mais j'ai de la difficulté avec saisir le Timer.

Ma SplashScreen s'ouvre correcteemnt à l'exécution de mon programme. Se ferme après toirs seconde. Ensuite ma Form principale devrait s'ouvrir mais mon programme s'arrete complètement.

Bref je ne saisis pas pourquoi ma Form princiapkle se ferme et ferme meme complètement mon progaramme... Voici mon code de la SplashScreen

Merci d'avance

Private Sub SplashScreen1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Timer1.Interval = 3000
        Timer1.Start()
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Timer1.Stop()
        Me.Close()
        Main.Show() 'Form Principale
    End Sub

21 réponses

Messages postés
51
Date d'inscription
lundi 18 mai 2009
Statut
Membre
Dernière intervention
30 octobre 2009
1
Salut "";

pour utiliser le "" tu n'est obligé d'utilisé le timer
tu peut par exemple arrêter le thread pour une duré déterminé, c'est presque comme l'utilisation de timer dans ce contexte bien sur.

alors dans ta forme de Splash met ce code:

 Private Sub SplashScreen1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Me.Show()
        Application.DoEvents()
        System.Threading.Thread.Sleep(100)
    End Sub


tu peut paramètrer la duré à partir de
 System.Threading.Thread.Sleep(100)

au lieu de mettre 100 met 200 etc...

Bonne Casse-tête.
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
6 octobre 2012
1
Bonjour... merci pour le code mais le SplashScreen reste toujours allumé... J'ai essayé cela juste pour essayé j'ai mit la valeur de 1 et ca reste toujours actif (SplashScreen):

Me.Show()
Application.DoEvents()
System.Threading.Thread.Sleep(1)
Main.Show()



La valeur est en millième de seconde ??? comme le timer...

Enfin vois-tu pourqoi le SplashScreen reste toujours actif ???

merci de ton aide
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
27
Salut,

Pour les splashscreen en .Net, tu as, dans les paramètres, une option qui te permet de définir un formulaire de ton projet comme splashscreen, durant le temps de chargement de ta feuille de démarrage, mais le temps n'est pas paramètrable.

Explorateur de solution > MyProject (Double-Clic) > Onglet Application > Ecran de démarrage.

Cela peut être une solution.

++ Mayzz.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Messages postés
51
Date d'inscription
lundi 18 mai 2009
Statut
Membre
Dernière intervention
30 octobre 2009
1
est ce que tu as essayé le code que je t'envoie sans timer?
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
6 octobre 2012
1
Mayzz
Mon écran de démarage est le Splash
Screen. J'avais mis cela dès le départ.

Marroubi
J'ai supprimer ma Form (SplashScreen) et je m'en suis créé une nouvelle avec ton code.


J'ai travaillé un peu dessus et j'ai remarquée que le SplashScreen apparaitre et s'efface et reviens ensuite... je ne comprend vraiment pas pourquoi il réaparait... Humm je ne sai spas si ca pourrait aller mieux, je pourrait t'envoyé mon code par courriel...

merci d'avance
Messages postés
51
Date d'inscription
lundi 18 mai 2009
Statut
Membre
Dernière intervention
30 octobre 2009
1
pour j'ai un exemple et ca marche avec le même code.

envoie moi ton code.
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
27
Mayzz
Mon écran de démarage est le Splash
Screen. J'avais mis cela dès le départ.


Alors pourquoi avoir mis un Timer ...?



Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
27
Si t'as un splash et que tu veux ralentir la fermeture de celui-ci c'est dans le load de ton form principale qu'il faut mettre le sleep.

Private Sub Main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Threading.Thread.Sleep(5000)
End Sub

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
27
Et bien entendu tu vire le code avec le timer de ton splash...

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
6 octobre 2012
1
Re Mayzz
Comme je disais, j'ai supprimer complètement la Form SpalshScreen donc je n'ai plus de timer...

J'ai mis ce code dans la Form de mon SplashScreen

Private Sub SplashScreen1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.Show()
Application.DoEvents()
System.Threading.Thread.Sleep(100)
End Sub


et j'ai essayé ton code dans ma Form Principale:

Private Sub Main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Threading.Thread.Sleep(100)
End Sub


et ca fonctionne toujours pas je dois avoir un "Setting" qui n'est pas correct car c'est ma form principale qui se ferme et mon spalshScreen reste ouvert....
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
27
Non, en fait, Crée une formSplash que tu défini dans les paramètres d'application comme étant le splashscreen. Laisse ce formulaire vide et dans ton formulaire principale, met le sleep et c'est tout, je viens de tester sur un projet vièrge, ça fonctionne.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
6 octobre 2012
1
Mayzz

Peux-tu m'envoyer ton code car je ne suis pas cretain de tout saisir.

Crée une formSplash que tu défini dans les paramètres d'application comme étant le splashscreen.


Je cré une Form normal que je nomme frmSplash ou je cré une form SplashScreen ?
Je défini dans les paramêtre d'application ??? je vais ou pour ca ??? J'ai jamais défini une Form en Form Splash

Désolé de mon ignorance..

merci d'avance
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
27
J'ai mis =>


Pour les splashscreen en .Net, tu as, dans les paramètres, une option qui te permet de définir un formulaire de ton projet comme splashscreen, durant le temps de chargement de ta feuille de démarrage, mais le temps n'est pas paramètrable.

Explorateur de solution > MyProject (Double-Clic) > Onglet Application > Ecran de démarrage.

Cela peut être une solution.


Et tu m'as répondu =>

Mayzz
Mon écran de démarage est le Splash
Screen. J'avais mis cela dès le départ.


Tu as déja paramétré ton splashscreen dans les paramètres d'application ou c'est simplement le fait que celle-ci se lance en premier et le timer qui fait que c'est ton splash ?

Je te parle de l'option "Ecran de démarrage" dans les paramètres de l'application et non "Formulaire de démarrage"

En gros :

Main => Formulaire de démarrage
SplashScreen => Ecran de démarrage

SplashScreen vide (sans code) et le code suivant dans la form Main:

Private Sub Main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
Threading.Thread.Sleep(5000) 
End Sub 


Voila =)

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
6 octobre 2012
1
Salut voici le prob... je n'ai pas mon SpalshScreen dans la choix pour la l'écran de démarage
J'aimerais bien te montrer une image (PrintScreen) mais je n'arrive pas a insérer l'image
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
6 octobre 2012
1
J'ai trouvé

merci beaucoup
Messages postés
51
Date d'inscription
lundi 18 mai 2009
Statut
Membre
Dernière intervention
30 octobre 2009
1
slt,
Effectivement, j'ai envoi la solution avec une printscreen à ton adresse.

Bonne Casse-tête.
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
27
Salut voici le prob... je n'ai pas mon SpalshScreen dans la choix pour la l'écran de démarage
J'aimerais bien te montrer une image (PrintScreen) mais je n'arrive pas a insérer l'image


Un formulaire ne peut être définit en tant qu'écran de démarrage et formulaire de démarrage à la fois.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Messages postés
38
Date d'inscription
samedi 17 juillet 2004
Statut
Membre
Dernière intervention
19 octobre 2010

Pour ceux que ça peut aider.

Plutôt que de mettre un sleep dans le formulaire Principal (pas très propre surtout si on veut changer régulierement de form principal)

il suffit de coller le code suivant dans la classe ApplicationEvents.

Cette classe est par défaut masqué. Pour l'afficher double cliquez sur "My Project" dans l'explorer de solution puis onglet Application --> bouton Afficher les évènements de l'application.

Après comme Mayzz l'a déjà dit, mettre son form principal en formulaire de démarrage et mettre son splash screen en écran de démarrage (Toujours dans l'onglet application des options du projet).


Protected Overrides Function OnInitialize( _
ByVal commandLineArgs As  _
System.Collections.ObjectModel.ReadOnlyCollection(Of String) _
) As Boolean
            Me.MinimumSplashScreenDisplayTime = 2000
            Return MyBase.OnInitialize(commandLineArgs)
        End Function
Messages postés
3
Date d'inscription
lundi 11 juin 2012
Statut
Membre
Dernière intervention
6 avril 2013

Bonsoir à tous ofait moi j'utilise le splashcreen sans timer, pour ce faire tu dois aller dans les propriétés de ton projet tu double Click sur Myprojet>Application>Ecran de démarrage.tu choisi le splashcreen que tu as créer,après tu Click sur le bouton Afficher les évènements de l'application et tu place ce code comme décrit ci-dessous dans la méthode partial friend.

Partial Friend Class MyApplication
Protected Overrides Function OnInitialize( _
ByVal commandLineArgs As _
System.Collections.ObjectModel.ReadOnlyCollection(Of String) _
) As Boolean
' le temps d'affichage sera de 5000 milliseconds (5 seconds).
Me.MinimumSplashScreenDisplayTime = 5000
Return MyBase.OnInitialize(commandLineArgs)
End Function
End Class
cela devrais marcher merci.
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
27
@kornetmuse> (Je te répond tout de même car je n'avais pas vu ton post) Le "sleep" c'était dans le but de ralentir le chargement du formulaire principal, juste pour montrer que ça fonctionne. Mais je ne connaissais pas cette propriété. Merci ça peut s'avérer utile.

@dieng444> pourquoi ré-ouvrir un post aussi vieux pour dire ce qui à déjà été dit ?


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.