7
votes

Winform Splash Spoash - VB.NET - Minuterie

J'ai un écran éclabousseur sur l'application et sur ce formulaire. J'ai une minuterie.

MainMenu.Show() 'this form should be shown as this is the main window of the application but it's not showing.
            Me.Close() 'closes login window


5 commentaires

Y a-t-il une raison d'éviter la forme SplashScreen intégrée?


C'est l'état actuel de l'application. Je peux suggérer d'utiliser le modèle intégré.


@Larstech - C'est le modèle intégré.


J'ai vérifié et c'est un écran Splash intégré. Maintenant, j'ai enlevé la minuterie et laissez le fil dormir pendant 2 secondes et fermez l'écran SPLASH et le formulaire de connexion s'affiche correctement sur le bouton Continuer Cliquez - J'essaie de montrer un nouveau formulaire et de fermer le formulaire actuel (formulaire de connexion). et cela n'affiche rien. Si je ne montre que le nouveau formulaire et que vous ne fermez pas le formulaire de connexion, les deux sont affichés correctement.


Je viens de mettre à jour ma réponse, je viens de vérifier pour vérifier que cela fonctionne


4 Réponses :


14
votes

Je suggère d'utiliser l'écran Splash intégré fourni par Visual Studio:

Aller au menu "Projets" et sélectionnez "Ajouter un formulaire Windows" et sélectionnez le modèle d'écran SPLASH: P>

Entrez la description de l'image ici p>

puis dans les paramètres de l'application du projet, sélectionnez ce formulaire pour être le Écran Splash: P>

Entrez la description de l'image ici p>

Votre démarrage Le formulaire doit être votre formulaire de connexion, pas le formulaire d'écran de l'éclaboussure. p>

mise à jour: strong> p>

Cliquez sur le bouton "Afficher les événements de l'application" de la dernière image de Votre écran d'application de mon projet et ajoutez ce code pour définir le MinimumsPlashCreendISIngayTime Valeur: P>

Imports System.Collections.ObjectModel

Namespace My
  Partial Friend Class MyApplication
    Protected Overrides Function OnInitialize(commandLineArgs As ReadOnlyCollection(Of String)) As Boolean
      Me.MinimumSplashScreenDisplayTime = 5000
      Return MyBase.OnInitialize(commandLineArgs)
    End Function
  End Class
End Namespace


1 commentaires

@kalls J'ai mis à jour la réponse avec un exemple pour ajouter un délai pour l'écran Splash. Aucune minuterie n'est nécessaire.



4
votes

Essayez d'ajouter un module à votre programme avec un Public Sub principale méthode. Définissez vos options de démarrage du projet sur Sub Main. Vous pouvez ensuite faire quelque chose comme: xxx p> Paramètres du projet:


1 commentaires

Je n'ai pas essayé ceci M. Hall. L'approche précédente a fonctionné pour moi. J'apprécie votre réponse.



0
votes

Ce que j'ai trouvé, c'est que les événements de minuterie ne sont pas tirés tant que l'événement / méthode de charge n'est pas terminé. Je mets un thread.sleep dans l'événement / méthode activé et cela me donne le résultat souhaité. Donc, j'essaie de montrer un écran éclaboussable avec quelques images de fond différentes et cela fonctionne bien.


0 commentaires

0
votes

J'ai trouvé une solution d'échantillon (mon splashscreen nommé " Chargement de chargement fort>" et mon formulaire de démarrage nommé " Connexion forte>")

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    If Timer1.Interval = 5000 Then
        Me.Hide()
        Login.Show()
    End If
End Sub


0 commentaires