countdown in sec.,min. und std.

11/12/2013 15:54 nawiat#1
Hey Leute !

habe diesen Code:

Code:
 Private Sub Eigener_Countdown_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Eigener_Countdown.Tick

        count = count - 1
        ProgressBar1.Value = ProgressBar1.Value + 1
        Label5.Text = count
        If count = 0 Then
            ProgressBar1.Value = 0
            Label8.Text = "Ende"
            Eigener_Countdown.Stop()
            TextBox1.Enabled = True
            Button1.Visible = True
        End If

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Button3.Visible = True
        Label8.Text = "-"
        Button1.Visible = False
        ProgressBar1.Maximum = TextBox1.Text
        count = TextBox1.Text
        Eigener_Countdown.Interval = 1000
        Eigener_Countdown.Start()
        TextBox1.Clear()
        TextBox1.Enabled = False

    End Sub
ich möchte aber das er nicht nur secunden anzeigt sondern ab 60 sec. ne minute druas macht und das selbe bei Stunden !

Danke leute ^^
11/12/2013 15:59 Syc#2
und wo genau liegt jetzt das Problem?
Du wirst doch wohl nicht an der Umrechnung von Sekunden in Minuten/Stunden scheitern oder?
11/12/2013 16:36 nawiat#3
nicht wirklich aber ich weiß nicht wie ich das in den timer schreibe ^^ also ich brauche nur die schreibweiße ^^
11/12/2013 16:40 Syc#4
warum willste dem timer minuten/stunden geben? für den brauchste ja nur eine einheit z.b. sekunden/milisekunden.

Und zur darstellung z.b. in nem label rechnest du des einfach vorher kurz mal um und wenn der user minuten/stunden eingeben soll um die countdownlänge zu bestimmen, dann rechnest den spaß halt programmintern einfach um.

Verstehe jetzt dein Problem nicht ganz
11/12/2013 16:46 nawiat#5
naja da komme ich mal zu meine zweiten Problem, wie kann ich es machen das ich jetzt sagen möchte der Countdown soll bis 9:00 Uhr runterrechnen, also wenn ich den 8:30 starte das er selber weiß das es noch 30 min sind ^^ dann muss er das ja auch selber anzeigen die 30 min ^^
11/12/2013 17:27 th0rex#6
Dein count = Endzeit in Sekunden - Startzeit in Sekunden.
Deine aktuelle Zeit auf dem Computer kannst du hiermit ermitteln:
[Only registered and activated users can see links. Click Here To Register...]
Dürfte eig funktionieren.
11/12/2013 18:51 nawiat#7
ja aber wie soll ich den Timer die end und startzeit in sec. umrechnen lassen ? und wie soll ich ihn das dann berechnen lassn und in einen Countdown schreiben lassen ?
Bitte leute in andren Foren hatte man kein bock mit zu antworten!
11/12/2013 18:55 th0rex#8
1 Min = 60 Sek, 1Std = 60min, 1 Tag = 24Std. Mehr brauchst du nicht zum umrechnen. Der startwert für den Countdown ist Endzeit - Startzeit in Sekunden. Kannst es dann natürlich wieder umrechnen und schön in Stunden :: Minuten :: Sekunden anzeigen. Der Endwert ist 0, den hast du aber schon drin in dem Code den du gepostet hast. In deinem Timer gibts ja die variable count setze die einfach auf den Startwert für den Countdown und ziehe in jedem Tick vom timer 1 ab und update ggf ein label oder ähnliches. Hoffe du verstehst jetzt besser was ich meinte wenn nicht frag ruhig weiter nach.
11/12/2013 19:00 nawiat#9
XD ja okay ein wenig weiter bin ich gekommen aber wennes dir nichts aus macht könntest du mir meinen Code umbauen damit ich sehe was du meinst ? wenn ich das nicht sehe verstehe ich das ganz schlecht ^^
Danke bist der beste XD
11/12/2013 19:15 th0rex#10
Aber wenn ich dir das umbaue verstehst du es ja immer noch nicht so wirklich ...

Naja wenn du meinst du lernst was draus... Hier ist das umgebaut (btw habe mir nicht wirklich Mühe gegeben und es ist keines falls sauberer Code aber es sollte dir klarer machen was ich meine und es sollte funktionieren):
Code:
Public Class Form1
    Dim TimeLeft As ULong
    Dim EndZeit, StartZeit As UInteger
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim tmp1, tmp2, tmp3 As Integer
        tmp1 = TimeOfDay.Hour + 1 'Oder was auch immer musst halt selbst wissen wie lange der laufen soll in meinem Falle läuft er jetzt 1Std'
        tmp2 = TimeOfDay.Minute
        tmp3 = TimeOfDay.Second
        EndZeit = tmp1 * 60 * 60
        EndZeit = EndZeit + tmp2 * 60
        EndZeit = EndZeit + tmp3

        tmp1 = TimeOfDay.Hour
        tmp2 = TimeOfDay.Minute
        tmp3 = TimeOfDay.Second
        StartZeit = tmp1 * 60 * 60
        StartZeit = StartZeit + tmp2 * 60
        StartZeit = StartZeit + tmp3
        TimeLeft = EndZeit - StartZeit
        Timer1.Interval = 1000
        Timer1.Start()
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        TimeLeft = TimeLeft - 1
        Label1.Text = TimeLeft
        If TimeLeft = 0 Then
            Label1.Text = "CountDown Beendet"
            Timer1.Stop()
        End If
    End Sub
End Class
Edit: Hehe mir fällt grad auf, dass TimeLeft garnicht ULong sein muss ... hatte da wohl kleinen Denkfail xD
11/12/2013 19:35 nawiat#11
das ist schon ganz geil aber ich glaube das ist nict ganz das was ich meinte XD Ich wollte eine feste endzeit festlegen, z.b 8:45 und wenn ich Countdown nun um 8:30 Starte soll er mitbekommen wie lange es noch bis 8:45 brauchtXD
11/12/2013 19:38 th0rex#12
Kannst du ja.
tmp1 = 8
tmp2 = 45
tmp3 = 0
EndZeit = tmp1 * 60 * 60
EndZeit = EndZeit + tmp2 * 60
EndZeit = EndZeit + tmp3
Wäre das dann für deine Zeit.
Musst dann halt nur um 8:30 Auf den Start-Button klicken.
Und genau das meinte ich mit c&p bringt dir nichts. Du hast zwar etwas das funktioniert, aber verstehst es nicht. Die Zeiten da drin zu ändern ist jetzt nicht zu schwer, vor allem weil ich auch noch ein Kommentar geschrieben habe das das die Zeit ist die du möchtest als EndZeit. Sagt ja sogar der Name der Variable. Ich habe einfach Jetzige Zeit + 1 Std genommen, weil mir nichts eingefallen ist.
11/12/2013 19:59 nawiat#13
danke du bist echt der beste !
ein kleines frägchen noch XD kann ich im Label Sec. Min. und Hours anzeigen lassen und nicht nur 5000 sec oder so ? damit es besser aus sieht ^^
11/12/2013 20:01 th0rex#14
Natürlich kann man das ... Ich habe es von Stunden, Minuten und Sekunden in Sekunden umgerechnet. Du musst das ganze jetzt anders rum machen... Das sollte jetzt nicht mehr zu schwer sein.

Edit : Google ist dein Freund. Habe nach ~10 Sek googlen was gefunden was deinen Wünschen entsprechen dürfte. Weiß nicht ob es geht, habe es nicht probiert. Wenn nicht google einfach weiter (oder besser probier aus, denn dabei lernst du auch was).
Code:
Private Function GetTimeInterval(ByVal nSeks As Long) As String
  Dim h As Long, m As Long
  Dim sInterv As String
 
  h = nSeks \ 3600
  nSeks = nSeks Mod 3600
  m = nSeks \ 60
  nSeks = nSeks Mod 60
 
  sInterv = Format(h, "00") & ":" & Format(m, "00") & ":" & Format(nSeks, "00")
 
  GetTimeInterval = sInterv
End Function
11/12/2013 22:38 Certox#15
c#
Code:
DateTime endTime = new DateTime(2013,01,01,0,0,0);
private void button1_Click(object sender, EventArgs e)
{ 
    Timer t = new Timer();
    t.Interval = 500;
    t.Tick +=new EventHandler(t_Tick);
    TimeSpan ts = endTime.Subtract(DateTime.Now);
    label1.Text = ts.ToString("d' Days 'h' Hours 'm' Minutes 's' Seconds'");
    t.Start();
}

void  t_Tick(object sender, EventArgs e)
{
    TimeSpan ts = endTime.Subtract(DateTime.Now);
    label1.Text = ts.ToString("d' Days 'h' Hours 'm' Minutes 's' Seconds'");
}
vb
Code:
Private endTime As New DateTime(2013, 1, 1, 0, 0, 0)
Private Sub button1_Click(sender As Object, e As EventArgs)
	Dim t As New Timer()
	t.Interval = 500
	t.Tick += New EventHandler(AddressOf t_Tick)
	Dim ts As TimeSpan = endTime.Subtract(DateTime.Now)
	label1.Text = ts.ToString("d' Days 'h' Hours 'm' Minutes 's' Seconds'")
	t.Start()
End Sub

Private Sub t_Tick(sender As Object, e As EventArgs)
	Dim ts As TimeSpan = endTime.Subtract(DateTime.Now)
	label1.Text = ts.ToString("d' Days 'h' Hours 'm' Minutes 's' Seconds'")
End Sub