0

私は.net経由で目覚まし時計を構築しています。パーセンテージ (プログレスバー) でアラームがトリガーされるまでの時間を表示したい.現在、アラーム時刻からカウントダウンを表示する機能と、時間、分、秒を返す現在のシステム時間がありますが、私は持っていませんこれを理解することができました..

Dim span As System.TimeSpan = TimeEnd.TimeOfDay - DateTime.Now.TimeOfDay
Dim remaining As String, remain As String, aTime As String

remaining = span.Hours & "hr:" & span.Minutes & "min:" & span.Seconds & "sec"
remain = span.Hours & span.Minutes & span.Seconds

For y = 0 To remain

    pBar.Minimum = 0
    pBar.Maximum = remain
    pBar.Value = y

    '  MsgBox("Min: " & pBar.Minimum & " Max:" & pBar.Maximum)
    Exit Sub


Next y

説明を入れる必要があると思います...

私は2回あります

アラーム時刻: 5:00: PM

現在の時間: それが何であれ

2 つの値の間の時間を計算し、2 つの値が近づくにつれてプログレス バーがいっぱいになるタイミングをプログレス バーで表現する必要があります。

4

2 に答える 2

1

あなたが抱えている主な問題の 1 つは、ProgressBar が整数を必要とし、Timespan の Hour、Minute、および Seconds プロパティが整数を与えることです。つまり、2 分は 2 を返しますが、120 秒になるため、それらを共通に掛ける必要があります。この場合の解像度は秒を使用しました。Time に設定された DateTimePicker、1 秒間隔の Timer を使用して例を作成し、2 つの DateTime オブジェクトの差を示す関数を作成しました。あなたのために働くかどうかを確認してください。

Public Class Form1

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        ProgressBar1.Minimum = 0
        ProgressBar1.Maximum = GetTimeDifference(DateTimePicker1.Value, DateTime.Now)
        Timer1.Start()
    End Sub
    Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
        Dim value As Integer = ProgressBar1.Maximum - GetTimeDifference(DateTimePicker1.Value, DateTime.Now)
        If value > ProgressBar1.Maximum Then
            Timer1.Stop()
            Exit Sub
        End If
        ProgressBar1.Value = value

    End Sub

    Public Function GetTimeDifference(EndTime As DateTime, StartTime As DateTime) As Integer
        Dim span As TimeSpan = EndTime.TimeOfDay - StartTime.TimeOfDay
        Dim hour As Integer = span.Hours * 360
        Dim minute As Integer = span.Minutes * 60
        Dim second As Integer = span.Seconds
        Dim result As Integer = hour + minute + second

        Return result

    End Function

End Class

コンラッドのコメントごとに変更された関数:

Public Function GetTimeDifference(EndTime As DateTime, StartTime As DateTime) As Integer

    Dim span As TimeSpan = EndTime.TimeOfDay - StartTime.TimeOfDay
    Dim result As Integer = CInt(span.TotalSeconds)

    Return result

End Function
于 2013-01-26T07:32:10.083 に答える
0
    Dim span As System.TimeSpan = TimeEnd.TimeOfDay - DateTime.Now.TimeOfDay
    Dim remaining As String, remain As String, aTime As String

    remaining = span.Hours & "hr:" & span.Minutes & "min:" & span.Seconds & "sec"
    remain = span.Hours & span.Minutes & span.Seconds

    For y = 0 To remain

        pBar.Minimum = 0
        pBar.Maximum = remain
        pBar.Value = y

        '  MsgBox("Min: " & pBar.Minimum & " Max:" & pBar.Maximum)
        Exit Sub


    Next y

pbar.maximumを残り時間に設定し、時間がアラーム時間に近づくにつれて進行させようとしています。

于 2013-01-26T05:55:20.537 に答える