Diskuze: odpočet
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Tvůrce

Zobrazeno 18 zpráv z 18.
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
né, to jsem nemyslel ... mám už timer a odpočítává to, ale potřebuju nějaké viditelné zpracování, které byde psát 59,58,57,56....
Co třeba psát do labelu? Každý tick odečteš od nastavené proměnné (short s = "odpocet") 1 a změníš text v labelu na aktuální hodnotu promněnné.
no a jak zjistim kolik zbývá nebo kolik už uběhlo z času ?
Tak co se týče již odběhnutého času, stačí přičítat nějakou
hodnotu, odpovídající času nebo mnohem lepší řešení je použít třídu
TimeSpan. Třída slouží právě pro výpočet kolik uběhlo času od
nějakého zadaného. V tvém případě by jsi počítal čas uběhnutý od
zapnutí hry, nebo tak nějak
No tou inkrementací (nebo dekrementací) dané proměnné. => Nastav si
interval timeru. Nebo to můžeš udělat přes timespan.
Příklad:
DataTime d = DateTime.Now;
....
private void Tick(object sender, EventArgs e)
{
Timespan t = d - DateTime.Now;
label1.Text = t.TotalSeconds;
}
Edit.: Jak vidím, tak Petr Nymsa to už napsal
Jelikož s C# začínám tak to dělám ve formulářové aplikaci ..
Hele není tady něco jako v Pascalu Delay ?
Možná bych ten odpočet mohl udělat přes for ..
A proč nevyužiješ ten TimeSpan, na tohle je přímo dělaný Koukni na kod Michael Olšavský ten to
napsal stručně ale jasně
Si udělej proměnnou int sekundy = 60, timeru nastav interval na 1000 a v
tick přičti 1
Přičítat - nebude leší sejmout čas a jen od aktuálního odečíst?
To je snad jedno, může si klidně počítat sekundy, pak zase nemusí nic převádět.
No použil jsem tvou radu
Teď to funguje přesně jak sem chtěl
Díky moc všem ..
Timer se ale po nejake dobe zacne dosti rozchazet, Tedy, ze sec nerva
doopravdy sec a pod... Zkuste
si napogramovat treba hodiny pomoci timeru...
Doporucoval bych doopravdy pouzivat ten TimeSpan Od toho ty funkce v C# jsou
A pokud je potreba vykreslovat cas v realnem case, tak to delam takto:
Do metody timeru vlozim nasledujici:
private void timer1_Tick(object sender, EventArgs e)
{
lCasuZbyva.Text = VypisCas(CasKdyMaNecoSkoncit - DateTime.Now);
}
kde timer ma nastaveny interval: 1 aby se to obnovovalo co nejcasteji.
a metoda pro vypsani casu vypada treba takhle:
private string VypisCas(TimeSpan cas)
{
StringBuilder sb = new StringBuilder();
if (cas.Days > 0)
sb.Append(cas.Days + " d ");
if (cas.Hours > 0)
sb.Append(cas.Hours + " h ");
if (cas.Minutes > 0)
sb.Append(cas.Minutes + " m ");
if (cas.Seconds > 0)
sb.Append(cas.Seconds + " s ");
if (cas.Milliseconds > 0)
sb.Append(cas.Milliseconds + " ms");
return sb.ToString();
}
no tak můj případ je měření minuty .. a u mého případu mi je jedno
jestli je to minuta a sekunda ...
ale pro větší projekty jistě použiji tvou radu
Díky moc
Zobrazeno 18 zpráv z 18.