进度条问题 VB.Net
Progress Bar Issue VB.Net
在为我的 Web 浏览器加载进度条时遇到一个小问题,每当我输入代码时,我程序中的 Windows.Forms.WebBrowserProgressChangedEventArgs 部分就会出现问题,出于某种原因,它的行为就像是写错了,试图弄清楚这里到底出了什么问题。
Private Sub Loading(ByVal sender As Object, ByVal e As Windows.Forms.WebBrowserProgressChangedEventArgs)
ToolStripProgressBar1.Maximum = e.MaximumProgress
ToolStripProgressBar1.Value = e.MaximumProgress
End Sub
Private Sub Done(ByVal sender As Object, ByVal e As Windows.Forms.WebBrowserDocumentCompletedEventArgs)
TabControl1.SelectedTab.Text = CType(TabControl1.SelectedTab.Controls.Item(0), WebBrowser).DocumentTitle
ComboBox1.Text = CType(TabControl1.SelectedTab.Controls.Item(0), WebBrowser).Url.ToString
End Sub
您每次都将 value
设置为 maximum
,因此无法正确显示。
但是 - 您不应该使用 MaxiumProgress
来设置进度条的 Maximum
值,因为 MaximumProgress
是 Long
并且 ProgressBar Value
是一个 Integer
,因此如果您有一个大文档,它可能会溢出。
您应该做的是计算 百分比 进度并显示:
Private Sub WebBrowser1_ProgressChanged(sender As Object, e As WebBrowserProgressChangedEventArgs) Handles WebBrowser1.ProgressChanged
Dim percentage As Integer
'calculate the percentage checking for zero maximum as an error case
If e.MaximumProgress = 0 Then
percentage = 0
Else
percentage = CInt(e.CurrentProgress / e.MaximumProgress * 100)
End If
'make sure it is in bounds of the progress bar
If percentage >= 0 AndAlso percentage <= ToolStripProgressBar1.Maximum Then
'set the value
ToolStripProgressBar1.Value = percentage
End If
End Sub
Private Sub WebBrowser1_Navigated(sender As Object, e As WebBrowserNavigatedEventArgs) Handles WebBrowser1.Navigated
'set the value to zero when we have finished
ToolStripProgressBar1.Value = 0
End Sub
现在您只需将进度条的最小值设置为 0,将最大值设置为 100(这是默认值)
在为我的 Web 浏览器加载进度条时遇到一个小问题,每当我输入代码时,我程序中的 Windows.Forms.WebBrowserProgressChangedEventArgs 部分就会出现问题,出于某种原因,它的行为就像是写错了,试图弄清楚这里到底出了什么问题。
Private Sub Loading(ByVal sender As Object, ByVal e As Windows.Forms.WebBrowserProgressChangedEventArgs)
ToolStripProgressBar1.Maximum = e.MaximumProgress
ToolStripProgressBar1.Value = e.MaximumProgress
End Sub
Private Sub Done(ByVal sender As Object, ByVal e As Windows.Forms.WebBrowserDocumentCompletedEventArgs)
TabControl1.SelectedTab.Text = CType(TabControl1.SelectedTab.Controls.Item(0), WebBrowser).DocumentTitle
ComboBox1.Text = CType(TabControl1.SelectedTab.Controls.Item(0), WebBrowser).Url.ToString
End Sub
您每次都将 value
设置为 maximum
,因此无法正确显示。
但是 - 您不应该使用 MaxiumProgress
来设置进度条的 Maximum
值,因为 MaximumProgress
是 Long
并且 ProgressBar Value
是一个 Integer
,因此如果您有一个大文档,它可能会溢出。
您应该做的是计算 百分比 进度并显示:
Private Sub WebBrowser1_ProgressChanged(sender As Object, e As WebBrowserProgressChangedEventArgs) Handles WebBrowser1.ProgressChanged
Dim percentage As Integer
'calculate the percentage checking for zero maximum as an error case
If e.MaximumProgress = 0 Then
percentage = 0
Else
percentage = CInt(e.CurrentProgress / e.MaximumProgress * 100)
End If
'make sure it is in bounds of the progress bar
If percentage >= 0 AndAlso percentage <= ToolStripProgressBar1.Maximum Then
'set the value
ToolStripProgressBar1.Value = percentage
End If
End Sub
Private Sub WebBrowser1_Navigated(sender As Object, e As WebBrowserNavigatedEventArgs) Handles WebBrowser1.Navigated
'set the value to zero when we have finished
ToolStripProgressBar1.Value = 0
End Sub
现在您只需将进度条的最小值设置为 0,将最大值设置为 100(这是默认值)