如何在VB.NET BackgroundWorker中使用百分比代替ProgressBar控件

如何在VB.NET BackgroundWorker中使用百分比代替ProgressBar控件,vb.net,backgroundworker,Vb.net,Backgroundworker,我只想在执行DoWork方法时报告ProgressChanged 我的代码是: Private Sub CloudDataWorker_DoWork(sender As Object, e As DoWorkEventArgs) Handles CloudDataWorker.DoWork GlobalVartions.PushtoCloud() CloudDataWorker.ReportProgress(100, "") End Sub 到目前为止,我所做的

我只想在执行
DoWork
方法时报告
ProgressChanged

我的代码是:

Private Sub CloudDataWorker_DoWork(sender As Object, e As DoWorkEventArgs) Handles CloudDataWorker.DoWork
        GlobalVartions.PushtoCloud()
        CloudDataWorker.ReportProgress(100, "")
End Sub
到目前为止,我所做的是这不起作用

Private Sub CloudDataWorker_ProgressChanged(sender As Object, e As ProgressChangedEventArgs) Handles CloudDataWorker.ProgressChanged
        uploadStat.Text = "Uploading" & "%"
End Sub
我不想使用
Progressbar
,而是想使用
percentage%
作为指标


我怎样才能做到这一点?谢谢。

在您的ProgressChanged方法中,“e”参数保存中的百分比值

所以你只需要像这样加载它:

uploadStat.Text = "Uploading" & e.ProgressPercentage & "%"

经过多次尝试后,我用这段代码完成了以下操作

这是我的
DoWork
方法

Private Sub CloudDataWorker_DoWork(sender As Object, e As DoWorkEventArgs) Handles CloudDataWorker.DoWork

        Dim i As Integer = 1
        Do While (i <= 10)
            If (CloudDataWorker.CancellationPending = True) Then
                e.Cancel = True
                Exit Do
            Else
                GlobalVartions.PushtoCloud()
                CloudDataWorker.ReportProgress((i * 2))
            End If

            i = (i + 1)
        Loop

End Sub
Private Sub CloudDataWorker_ProgressChanged(sender As Object, e As ProgressChangedEventArgs) Handles CloudDataWorker.ProgressChanged
        uploadStat.Text = (e.ProgressPercentage.ToString + "%")
    End Sub

现在它工作得很好

中的示例正好说明了这一点。如果“GlobalPartions”类无法告诉您PushtoCloud()函数的进度,那么您也无法有意义地调用ReportProgress。“有人可以让那个班变得更好,你不会把他带到这里来的。”汉斯帕桑我解决了我的问题。下面是我的答案。谢谢。@F0r3v3r-A-N00b应该是10,我将答案更新为2,并注意到I=(I+1),所以找到了。但这有意义吗?在最初的代码中,您调用了
globalpartions.PushtoCloud
,现在调用了10次。你真的想打10次电话吗?我很怀疑。要得到这个百分比:(I/10)*100@jmcilhinney是的。重复。