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

cs_MagDix Messages postés 532 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 6 octobre 2012 - 27 oct. 2009 à 13:03
dieng444 Messages postés 3 Date d'inscription lundi 11 juin 2012 Statut Membre Dernière intervention 6 avril 2013 - 17 juin 2012 à 00:11
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
A voir également:

21 réponses

Marroubi Messages postés 51 Date d'inscription lundi 18 mai 2009 Statut Membre Dernière intervention 30 octobre 2009 2
27 oct. 2009 à 13:31
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.
0
cs_MagDix Messages postés 532 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 6 octobre 2012 1
27 oct. 2009 à 13:44
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
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
27 oct. 2009 à 13:57
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.
0
Marroubi Messages postés 51 Date d'inscription lundi 18 mai 2009 Statut Membre Dernière intervention 30 octobre 2009 2
27 oct. 2009 à 14:00
est ce que tu as essayé le code que je t'envoie sans timer?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_MagDix Messages postés 532 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 6 octobre 2012 1
27 oct. 2009 à 14:06
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
0
Marroubi Messages postés 51 Date d'inscription lundi 18 mai 2009 Statut Membre Dernière intervention 30 octobre 2009 2
27 oct. 2009 à 14:10
pour j'ai un exemple et ca marche avec le même code.

envoie moi ton code.
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
27 oct. 2009 à 14:17
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.
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
27 oct. 2009 à 14:19
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.
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
27 oct. 2009 à 14:22
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.
0
cs_MagDix Messages postés 532 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 6 octobre 2012 1
27 oct. 2009 à 14:29
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....
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
27 oct. 2009 à 14:34
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.
0
cs_MagDix Messages postés 532 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 6 octobre 2012 1
27 oct. 2009 à 15:16
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
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
27 oct. 2009 à 16:05
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.
0
cs_MagDix Messages postés 532 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 6 octobre 2012 1
27 oct. 2009 à 16:16
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
0
cs_MagDix Messages postés 532 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 6 octobre 2012 1
27 oct. 2009 à 16:18
J'ai trouvé

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

Bonne Casse-tête.
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
27 oct. 2009 à 20:10
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.
0
kornetmuse Messages postés 38 Date d'inscription samedi 17 juillet 2004 Statut Membre Dernière intervention 19 octobre 2010
28 mai 2010 à 12:23
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
0
dieng444 Messages postés 3 Date d'inscription lundi 11 juin 2012 Statut Membre Dernière intervention 6 avril 2013
15 juin 2012 à 23:52
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.
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
16 juin 2012 à 00:53
@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.
0
Rejoignez-nous