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

VB.NET Discussion :

Pb affichage Splashscreen


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Par défaut Pb affichage Splashscreen
    Bonjour,

    Voilà un sujet classique où l'on trouve pas mal de pistes sur internet.
    Il s'agit de lancer une appli via un splashscreen, mais de mettre à jour dans un label de ce Splash le % d'avancement de l'initialisation.
    J'ai presque réussi à mes fins grâce à des recherches sur le NET.

    Le label en question se met bien à jour et les valeurs affichées sont conformes.

    Le seul pb, c'est que les autres labels de mon splashscreen (qui pour l'instant est assez rudimentaire), statiques quant à eux et définis dans la procédure Load sont gelés. Malheureusement je n'ai pas réussi à prendre de capture d'écran mais l'affichage de ces autres labels prend la forme d'un rectangle blanc.

    Je précise que mon appli est de type WinForms mais démarre sur un sub Main, si bien que le paramètre "Activer l'infrastructure d'application" est désactivé.

    Voici mon code :

    Pour le splash :
    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
    Public NotInheritable Class Form_Splash
     
        Private Delegate Sub SetTextCallback(ByVal [text] As String)
     
        Public Sub SetText(ByVal [text] As String)
            If Me.LB_Progression.InvokeRequired Then
                Dim d As New SetTextCallback(AddressOf SetText)
                Me.Invoke(d, New Object() {[text]})
            Else
                Me.LB_Progression.Text = [text]
                Me.LB_Progression.Refresh()
            End If
        End Sub
     
     
        Private Sub Form_Splash_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            If My.Application.Info.Title <> "" Then
                ApplicationTitle.Text = My.Application.Info.Title
            Else
                ApplicationTitle.Text = System.IO.Path.GetFileNameWithoutExtension(My.Application.Info.AssemblyName)
            End If
            Version.Text = System.String.Format(Version.Text, My.Application.Info.Version.Major, My.Application.Info.Version.Minor, My.Application.Info.Version.Build, My.Application.Info.Version.Revision)
     
            Copyright.Text = My.Application.Info.Copyright
        End Sub
     
     
    End Class
    Pour la sub main()
    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
    Module General
        Private splash As Form_Splash
     
        Public Sub Main()
     
            Application.EnableVisualStyles()
            Application.SetCompatibleTextRenderingDefault(False)
            splash = New Form_Splash
    ...
                    splash.Show()
                    If InitialiseDB() Then
    ...
            End Sub
     
    Function InitialiseDB() As Boolean
            Try
                splash.SetText("Recherche base de données existante")
    ...
    Bref, il doit y avoir un pb de refresh ou c'est la fonction Show qui pose pb (mais je ne peux pas mettre ShowDialog, sinon le reste de la procédure n'est pas lue)

    Je ne pense pas que mon pb d'affichage soit lié à la solution mise en oeuvre pour envoyer au Splash les infos concernant la progression de l'initialisation, mais je n'en suis pas sûr non plus.

    Par ailleurs, j'ai un petit soucis secondaire. Je souhaiterais appliquer l'astuce du tuto de P. Lasserre pour spécifier un MinimumSplashScreenDisplayTime (§ X-A-3) mais la propriété My.Application.MinimumSplashScreenDisplayTime justement parce que le paramètre "Activer l'infrastructure d'application" est désactivé et que je n'ai donc pas pu spécifier le SplashScreen dans les propriétés du projet.

    Merci de votre aide.

  2. #2
    Membre éclairé
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Par défaut
    Bon, ben je m'auto-réponds (à force de tatonner), pour le pb n°1 :
    Il faut transformer la procédure Load en Activated et rajouter un Me.refresh en fin de procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        Private Sub Form_Splash_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
            If My.Application.Info.Title <> "" Then
                ApplicationTitle.Text = My.Application.Info.Title
            Else
                ApplicationTitle.Text = System.IO.Path.GetFileNameWithoutExtension(My.Application.Info.AssemblyName)
            End If
            Version.Text = System.String.Format(Version.Text, My.Application.Info.Version.Major, My.Application.Info.Version.Minor, My.Application.Info.Version.Build, My.Application.Info.Version.Revision)
            Copyright.Text = My.Application.Info.Copyright
            Me.Refresh()
        End Sub
    Je passe le sujet en résolu, mais j'en ouvre un autre pour le pb n°2 plus spécifique.

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

Discussions similaires

  1. augmenter le temp d'affichage du splashscreen
    Par bucabuca dans le forum VB.NET
    Réponses: 7
    Dernier message: 07/12/2010, 16h05
  2. [Splashscreen] affichage d'un cadre blanc
    Par afrikha dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 16/09/2006, 16h56
  3. Affichage de SplashScreen
    Par annedjomo dans le forum MFC
    Réponses: 6
    Dernier message: 15/09/2005, 14h56
  4. Pb affichage avec un PaintBox (pour eviter scintillement)
    Par juan64 dans le forum C++Builder
    Réponses: 7
    Dernier message: 08/04/2004, 09h21
  5. Affichage en passant par un buffer...
    Par Sirotilc dans le forum MFC
    Réponses: 5
    Dernier message: 27/05/2002, 21h00

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