Bonjour bonjour, je me permet de venir vous voir car j'ai un petit soucis, après de nombreux tests sur le background worker je ne comprends pas tout.
Je m'explique.
J'ai une fenêtre de connexion à laquelle l'utilisateur se connecte, lorsqu'il clique sur OK, l'application va vérifier la présence de l'utilisateur dans la base, la cohérence des données saisies, ... Cependant, à l'heure actuelle, j'incrémente la progressBar avec un performstep. Mais j'aimerais afficher le pourcentage de l'avancement.
J'ai essayé quelques options, mais je ne comprends pas ...

Voici mon code :

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
 
Public Class F_Identification
 
	Private Sub F_Identification_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
		F_Menu.Cursor = Cursors.Default
		'Mise en place de la fenêtre au centre de F_Menu
		Me.CenterToParent()
		CHB_Test.Visible = False
		CHB_Local.Visible = False
		If Not File.Exists(My.Settings.EmplacementFichierLog & "log.txt") Then
			FichierLogErreurs = New StreamWriter(My.Settings.EmplacementFichierLog & "log.txt")
		Else
			FichierLogErreurs = File.AppendText(My.Settings.EmplacementFichierLog & "log.txt")
		End If
	End Sub
 
	Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click
		OK.Text = "Traitement en cours..."
		OK.Enabled = False
		bgwDesign.RunWorkerAsync(CInt(100))
 
		'Déclarations des variables
		Dim Nombre As Integer
		'PB_Chargement.PerformStep()
 
		'Détermination des identifiants de connexion à la base de données.
		hostBDD = "localhost"
		identifiantBDD = "root"
		passwordBDD = ""
		NomBDD = "Basetravail"
 
		If CHB_Test.Checked = True Then
			hostBDD = "localhost"
			identifiantBDD = "root"
			passwordBDD = ""
			NomBDD = "Basetravail"
 
		End If
 
		Cursor = Cursors.WaitCursor
		Select Case True
			Case String.IsNullOrEmpty(T_NomUtilisateur.Text)
				F_Menu.Cursor = Cursors.Default
				'Pseudo non rempli
				MsgBox("Merci de saisir un pseudo", MsgBoxStyle.Exclamation)
				T_NomUtilisateur.Focus()
				T_NomUtilisateur.SelectAll()
				PB_Chargement.Value = 0
 
			Case String.IsNullOrEmpty(T_MDP.Text)
				F_Menu.Cursor = Cursors.Default
				'Mot de passe non rempli
				MsgBox("Merci de saisir un mot de passe", MsgBoxStyle.Exclamation)
				T_MDP.Focus()
				T_MDP.SelectAll()
				PB_Chargement.Value = 0
 
			Case Else
				'déclaration des variables de requête
				Dim reqSelectnb As String
				Dim dtnb As DataTable
 
				PseudoSaisi = T_NomUtilisateur.Text
				reqSelectnb = "select count(*) FROM UTILISATEURS where IdUtilisateur='" & PseudoSaisi & "' "
				'PB_Chargement.PerformStep()
				Try
					dtnb = OrdresSQL.ReqSelection(reqSelectnb)
					Nombre = dtnb.Rows(0).Item(0).ToString
					'affectation du nombre dans nb
				Catch ex As Exception
					PB_Chargement.Value = 0
					If ex.Message.Substring(0, 22) = "Access denied for user" Then
						MessageBox.Show("Merci de revérifier votre pseudo ou votre mot de passe",
						 "Erreur d'identifiants BDD", MessageBoxButtons.OK, MessageBoxIcon.Information)
					Else
						LogErreur(ex.Message, "page : F_Identification", Requete)
					End If
				End Try
 
				If Nombre = 0 Then
					'En cas d'absence du pseudo dans la base de données.
					F_Menu.Cursor = Cursors.Default
					PB_Chargement.Value = 0
					MsgBox("L'accès a cette application est restreint." &
					  (Chr(13)) & " Votre pseudo n'existe pas dans la base de données" &
					  (Chr(13)) & " Pour plus d'informations contacter l'administrateur de l'application.",
					  MsgBoxStyle.Critical,
					  "Accès refusé : Pseudo inconnu")
					T_NomUtilisateur.Focus()
					T_NomUtilisateur.SelectAll()
 
				ElseIf Nombre = 1 Then
					Dim reqSelectMdp As String
					Dim dtlib As DataTable
					'PB_Chargement.PerformStep()
					'sélection du numéro, du mot de passe, et de l'id
					reqSelectMdp = "select motPasseUtilisateur,numeroUtilisateur,idUtilisateur FROM UTILISATEURS where idUtilisateur='" & PseudoSaisi & "'"
 
					dtlib = OrdresSQL.ReqSelection(reqSelectMdp)
 
					'Affectation des données admin dans les variables
					Password = dtlib.Rows(0).Item(0).ToString
					NumeroUtilisateur = dtlib.Rows(0).Item(1).ToString
					Pseudo = dtlib.Rows(0).Item(2).ToString
 
					If Password <> T_MDP.Text Then
						'Si le mot de passe saisi est différent de celui présent dans la base
						F_Menu.Cursor = Cursors.Default
						'PB_Chargement.Value = 0
						'Affichage du message d'erreur
						MsgBox("L'accès a cette application est restreint." &
						 (Chr(13)) & " Votre mot de passe ne correspond pas avec la base de données" &
						 (Chr(13)) & " Pour plus d'informations contacter l'administrateur de l'application.",
						 MsgBoxStyle.Critical,
						 "Accès refusé : Mot de passe inconnu")
						T_MDP.Focus()
						T_MDP.SelectAll()
 
					Else
						'Si le password et le pseudo correspondent alors connexion autorisée
 
						'Avancement de la barre de chargement
						'PB_Chargement.PerformStep()
						'chargement des combos du menu
						ChargerComboMenus()
						'Préparation de la fenêtre menu
						With F_Menu
							.S_Infos.Visible = True
							.M_Menu.Visible = True
							.TS_IdUtilisateur.Text = "Bonjour " & Pseudo
							.TS_Date.Text = "Nous somme le " & Now.Date.ToString("dddd d MMMM yyyy")
						End With
						FichierLogErreurs.WriteLine(Now.Date.ToString("dd-MM-yyyy") & " " & Now.Hour & ":" & Now.Minute)
						FichierLogErreurs.WriteLine(Pseudo & " : Connexion à l'application")
						Me.Close()
						F_Menu.Cursor = Cursors.Default
						If My.Settings.SiretSociété = Nothing Then
							OuvertureFenêtre(F_Préférences)
						End If
					End If
				End If
		End Select
	End Sub
 
	Private Sub Cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel.Click
		'Fermeture de l'application
		Me.Close()
		Application.Exit()
	End Sub
 
	Private Sub T_NomUtilisateur_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles T_NomUtilisateur.Click
		SélectionDonnéesChamp(T_NomUtilisateur)
	End Sub
 
	Private Sub T_NomUtilisateur_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles T_NomUtilisateur.Leave
		If T_NomUtilisateur.Text = "admin" Then
			CHB_Test.Visible = True
			CHB_Test.Checked = True
			CHB_Local.Visible = True
		End If
 
	End Sub
 
	Private Sub T_MDP_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles T_MDP.Click
		SélectionDonnéesChamp(T_MDP)
	End Sub
 
 
	Private Sub bgwDesign_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles bgwDesign.DoWork
		Dim worker As BackgroundWorker = CType(sender, BackgroundWorker)
 
		e.Result = Treatment(CInt(e.Argument), CInt(e.Argument), worker, e)
	End Sub
	Private Function Treatment(ByVal nb As Integer, ByVal max As Integer, ByVal worker As BackgroundWorker, ByVal e As DoWorkEventArgs) As Long
 
		Dim result As Long = 0
 
		If worker.CancellationPending Then
			e.Cancel = True
		Else
			Dim pourcent As Integer = CInt(((CDec(max) - CDec(nb)) / CDec(max) * 100))
			worker.ReportProgress(pourcent)
			If nb <= 1 Then
				result = 1
			Else
				System.Threading.Thread.Sleep(100)
				result = Treatment(nb - 1, max, worker, e) + 1
			End If
		End If
 
		Return result
	End Function
 
	Private Sub bgwDesign_RunWorkerCompleted(ByVal sender As System.Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles bgwDesign.RunWorkerCompleted
		If Not (e.Error Is Nothing) Then
			MsgBox("Une erreur est survenue ! Détail : " + e.Error.Message)
		ElseIf e.Cancelled Then
			MsgBox("Opération annulée !")
		Else
			MsgBox("OK")
		End If
 
	End Sub
 
	Private Sub bgwDesign_ProgressChanged(ByVal sender As System.Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles bgwDesign.ProgressChanged
		PB_Chargement.Value = e.ProgressPercentage
	End Sub
End Class
Pouvez vous m'aider ?