Vb.net计时器不能像我想的那样工作

时间:2013-12-24 00:33:22

标签: vb.net

我的程序中有一个计时器,计时器触发一个进度条,当进度条完成时,它会显示一个标签。问题是标签在进度条完成之前变得可见。这是我的代码。

 Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    If ComboBox1.SelectedItem = "Microsoft Office" Then
        ProgressBar1.Visible = True
        ProgressBar1.Increment(5)
    End If
    If ComboBox1.SelectedItem = "Windows 8" Then
        ProgressBar1.Visible = True
        ProgressBar1.Increment(1)
    End If
    If ComboBox1.SelectedItem = "Sony Vegas Pro 12.0" Then
        ProgressBar1.Visible = True
        ProgressBar1.Increment(10)
    End If
    If ComboBox1.SelectedItem = "Minecraft Premium" Then
        ProgressBar1.Visible = True
        ProgressBar1.Increment(20)
    End If
    If ProgressBar1.Value = ProgressBar1.Maximum Then
        Timer1.Stop()
        ProgressBar1.Value = 0
        ProgressBar1.Visible = False
        Button1.Visible = False
        Button2.Visible = True
    End If
    If ComboBox1.SelectedItem = "Microsoft Office" Then
        Label4.Visible = True
        Exit Sub
    End If
    If ComboBox1.SelectedItem = "Windows 8" Then
        Label5.Visible = True
        Exit Sub
    End If
    If ComboBox1.SelectedItem = "Sony Vegas Pro 12.0" Then
        Label6.Visible = True
        Exit Sub
    End If
    If ComboBox1.SelectedItem = "Minecraft Premium" Then
        Label7.Visible = True
        Exit Sub
    End If
End Sub

如果我能够在进度条变得可见之前找到标签出现的原因,那就太棒了!

1 个答案:

答案 0 :(得分:0)

问题在于If陈述的逻辑。使Label之一可见的最后三个在每个刻度上进行评估和执行。如果您只想在进度条完成时对它们进行评估,请尝试更多这样的:

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    If ComboBox1.SelectedItem = "Microsoft Office" Then
        ProgressBar1.Visible = True
        ProgressBar1.Increment(5)
    End If
    If ComboBox1.SelectedItem = "Windows 8" Then
        ProgressBar1.Visible = True
        ProgressBar1.Increment(1)
    End If
    If ComboBox1.SelectedItem = "Sony Vegas Pro 12.0" Then
        ProgressBar1.Visible = True
        ProgressBar1.Increment(10)
    End If
    If ComboBox1.SelectedItem = "Minecraft Premium" Then
        ProgressBar1.Visible = True
        ProgressBar1.Increment(20)
    End If
    If ProgressBar1.Value = ProgressBar1.Maximum Then
        Timer1.Stop()
        ProgressBar1.Value = 0
        ProgressBar1.Visible = False
        Button1.Visible = False
        Button2.Visible = True

        If ComboBox1.SelectedItem = "Microsoft Office" Then
            Label4.Visible = True
            Exit Sub
        End If
        If ComboBox1.SelectedItem = "Windows 8" Then
            Label5.Visible = True
            Exit Sub
        End If
        If ComboBox1.SelectedItem = "Sony Vegas Pro 12.0" Then
            Label6.Visible = True
            Exit Sub
        End If
        If ComboBox1.SelectedItem = "Minecraft Premium" Then
            Label7.Visible = True
            Exit Sub
        End If
    End If
End Sub