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.