【发布时间】:2016-12-21 03:28:34
【问题描述】:
Private Time As New Timer
Private Sub btnWood_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnWood.Click
prgWood.Value = 0
Time.Interval = 1000
Time.Start()
AddHandler Time.Tick, AddressOf IncreaseProgressBar
If prgWood.Value <> prgWood.Maximum Then
btnWood.Enabled = False
End If
Dim intAmountofWood As Integer = 11 * Rnd() + 10
intWood = intWood + intAmountofWood
Me.lblWoodAmount.Text = intWood
Private Sub IncreaseProgressBar(ByVal sender As Object, ByVal e As EventArgs)
prgWood.Increment(10)
If prgWood.Value = prgWood.Maximum Then
prgWood.Increment(0)
Time.Stop()
btnWood.Enabled = True
End If
End Sub
对于我的进度条,我使用 Timer 每 1 秒将值增加 10。当我调试项目时,它第一次运行良好(进度条完成需要 10 秒)但是当我第二次单击按钮时,它只需要 5 秒,然后每次越来越少。此代码适用于我正在尝试为学校制作的增量游戏。
【问题讨论】:
-
在构造函数中只添加一次 AddHandler。您每次都在添加它,这意味着每次启动时都会多次调用您的 Tick 事件。
-
@LarsTech 感谢您的回答,如何在将计时器与进度条相关联的同时摆脱 AddHandler?抱歉,我对 vb 还是很陌生。
标签: vb.net button timer progress-bar