VB2012中的Progressbar问题

时间:2014-08-01 22:45:58

标签: vb.net alarm

我正在尝试将ProgressBar添加到我的程序中。该程序基本上比较了两个时间值,当值相等时,MessageBox似乎表示时间已到。我需要根据两个值的时差来加载ProgressBar。时钟中的一个值和另一个值由用户输入(类似于警报)。

我的代码:

Imports System.Net.Mime.MediaTypeNames

Public Class Form1
    Private hour As Integer = 0
    Private minute As Integer = 0
    Private second As Integer = 0

    Public Sub show_time()
        second += 1
        If second = 59 Then
            second = 0
            minute += 1
            If minute = 59 Then
                minute += 1
                hour += 1
            End If
        End If

        Label3PrgressStdPC.Text = hour.ToString.PadLeft(2, "0") & ":"
        Label3PrgressStdPC.Text &= minute.ToString.PadLeft(2, "0") & ":"
        Label3PrgressStdPC.Text &= second.ToString.PadLeft(2, "0")
        Label3PrgressStdPC.Refresh()

    End Sub

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        show_time()
        If TextBox1.SelectedText = TextBox1.Text Then Exit Sub
        If TextBox1.Text = Label3PrgressStdPC.Text Then
            Timer1.Stop()
            MsgBox("time is up")

        End If
    End Sub

    Private Sub Bn_start_St01_Click(sender As Object, e As EventArgs) Handles Bn_start_St01.Click
        Timer1.Start()
        Timer1.Enabled = True
        Timer2.Start()
        Timer2.Enabled = True

    End Sub


    **Private Sub ProgressBar1_Click(sender As Object, e As EventArgs) Handles ProgressBar1.Click
        ProgressBar1.Maximum = , the max progrssbr will be determine by user input
        ProgressBar1.Minimum = 0**

    End Sub



    **Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
       progresbar1.value = ,Not so sure how to write the logic here**

    End Sub
End Class

任何人都可以帮助我,我真的感到沮丧.....谢谢

1 个答案:

答案 0 :(得分:0)

这样的事情怎么样......

Private Ticker As Timer = New Timer 'Create a timer
Private Start As DateTime 'Store when we start
Private Expire As DateTime 'and when we end

'Call this to get things going
Sub Begin(EndHour As Integer, EndMinute As Integer, EndSecond As Integer)
    Start = DateTime.Now

    'If input is a time today ...
    Expire = DateTime.Now.Date.Add(New TimeSpan(EndHour, EndMinute, EndSecond))

    'or just a number of hours/mins/secs from now...
    Expire = DateTime.Now.Add(New TimeSpan(EndHour, EndMinute, EndSecond))

    'When the timer fires, call Tick()
    AddHandler Ticker.Elapsed, Sub() Tick()

    Ticker.Enabled = True
    Ticker.Interval = 1000
    Ticker.Start

End Sub

Private Sub Tick()
    If DateTime.Now < Expire Then
        'Not Finished
        Dim Elapsed = DateTime.Now.Subtract(Start)
        Dim TotalMillis = Expire.Subtract(Start).TotalMilliseconds
        Dim ProgressDouble = Elapsed.TotalMilliseconds / TotalMillis

        'Me.Invoke is used here as the timer Tick() occurs on a different thread to the
        'one used to create the UI. This passes a message to the UI telling it to
        'update the progress bar. 
        Me.Invoke(Sub() 
                      ProgressBar1.Value = CInt(ProgressDouble * ProgressBar1.Maximum)
                      Label3PrgressStdPC.Text = Elapsed.ToString
                  End Sub)
    Else
        'Done
        MessageBox.Show("Done")
        Ticker.Stop
    End If
End Sub

有关调用的详细信息,请参阅VB.NET Delegates and Invoke - can somebody explain these to me?