Bonsoir tous le monde,
J'ai un petit soucis, je n'arrive pas à voir ma barre de progression au chargement du formulaire bien que j'ai mis mon LoadData dans Form1.shown :
C'est pour ainsi dire la première fois que je mets en place ce type d'affichage qui devra fonctionner depuis n'importe quel Threads et j'aimerais avoir des avis aussi si il y a un truc qui pourrait être amélioré car je suis prêt à changer le code si besoin.
EDIT : Ouhhh ça patine sévère lol. En fait je crois que je suis fatigué, j'ai oublié de créer le Thread pour charger les données.
En fait ma question porte plus sur le fait que je vais devoir manipuler d'autres propriétés de ma ToolStripProgressBar (.visible par exemple) et je vais devoir multiplier les procédure Invoquer (une pour chaque propriété ?!) ou passer des arguments mais je ne sais pas comment faire.
Dans mon LoadData j'ai mis çà :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles Me.Shown Call LoadData() End Sub
et j'invoque l'affichage comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Private Sub LoadData() ' Chargement des données : Dim Count As Integer Dim Totale As Integer = Directory.GetDirectories(Options.AC_Doc_Directory & "\setups").Length For Each Folder As String In Directory.GetDirectories(Options.AC_Doc_Directory & "\setups") Count += 1 ......... SetProgress(CSng(Count / Totale)) Next End Sub
Merci beaucoup pour votre aide.
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 Private PProgress As Single Private Message As String Public Sub SetProgress(ByVal PProgress As Single) Me.PProgress = PProgress InvoquerAffichage() End Sub Public Sub SetMessage(ByVal Message As String) Me.Message = Message InvoquerAffichage() End Sub Delegate Sub DelegateAffiche() Private Sub InvoquerAffichage() 'Dim MyDelegate As New DelegateAffichage(AddressOf Affiche2) ' InvokeRequired compare l'ID du thread appelant à l'ID du thread qui a créé le controle. Si ces threads sont différent, renvoie true. If Me.InvokeRequired Then Dim MyDelegate As New DelegateAffiche(AddressOf Affiche) ' Sub Affiche2 'ToolStripProgressBar1.Invoke(MyDelegate) Me.Invoke(MyDelegate) Else Call Affiche() End If End Sub Private Sub Affiche() ToolStripProgressBar1.Value = CInt(Me.PProgress) ToolStripStatusLabel1.Text = Me.Message End Sub
Partager