Diskuze: c# form - odpočet času

C# .NET .NET (C# a Visual Basic) c# form - odpočet času American English version English version

Avatar
Michaal.K
Člen
Avatar
Michaal.K:

Ahoj,
potřebuju v aplikaci udělat odpočet času. Uživatel zadá například, že chce odpočet 1 hodinu a 5minut. Takže v aplikaci se v labelu objeví odpočet 01:05 a bude odpočítávat. A když by se dojelo na nulu tak by odpočet začal znova na 01:05 a tak pořád dokola.
Zkoušel jsem to udělat přes timer a timespan. Takže když odstartuju timer tak uložím aktuální čas a chci přičíst tu zadanou 1 hodinu a 5minut a to mi právě nejde. A v události timeru tick chci pak od připočteného času odečítat aktuální čas přes timespan a zobrazovat v labelu.
A ještě nevím jak poubehnutí odpočtu (dostanu se na nulu) to celé zopakovat aby to mohlo běžet několik dní...
Díky moc

Editováno 3. června 8:52
 
Odpovědět 3. června 8:51
Avatar
 
Nahoru Odpovědět 3. června 9:21
Avatar
Michaal.K
Člen
Avatar
Michaal.K:

Tak zatím to mám takto a funguje to:

private void timer1_Tick(object sender, EventArgs e)
        {
            TimeSpan ts = startOdpoctu - DateTime.Now;
            labelOdpocet.TextAlign = ContentAlignment.MiddleCenter;
            labelOdpocet.Text = ts.ToString();
        }

        private void buttonStartCasovac_Click(object sender, EventArgs e)
        {
            timer1.Enabled = true;

            int hodinyOdpocet = Convert.ToInt32(numericUpDownHodiny.Value);
            int minutyOdpocet = Convert.ToInt32(numericUpDownMinuty.Value);

            startOdpoctu = DateTime.Now;
            startOdpoctu = startOdpoctu.AddHours(hodinyOdpocet);
            startOdpoctu = startOdpoctu.AddMinutes(minutyOdpocet);
        }

Udalost interval timer tick je 100. Jen nevím jestli jsou dobře přechody když uživatel zadá 50min a aktuální čas je 9:50hod a to samé nevím u dnů (když by bylo před půlnocí).
Díky

 
Nahoru Odpovědět 3. června 9:34
Avatar
STP
Člen
Avatar
STP:

Nestačilo by to takto?

static void Main(string[] args)
   {
       System.Timers.Timer t = new System.Timers.Timer();
       t.AutoReset = true;
       t.Interval = 3900000; // hodina a pet minut v ms  (65 minut * 60  * 1000 (myslim :) ))
       t.Elapsed += T_Elapsed;
       t.Start();
   }

   private static void T_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
   {
       //Interval ktery chceme
   }
Nahoru Odpovědět 3. června 11:12
Když umřít, tak online!!!
Avatar
STP
Člen
Avatar
Odpovídá na STP
STP:

Zapoměl jsem že chceš v labelu zobrazovat čas :( Tímto způsobem to nepůjde. Sry...
Pak tedy opravdu použit System.Window­s.Forms.Timer ...

Editováno 3. června 11:23
Nahoru Odpovědět 3. června 11:22
Když umřít, tak online!!!
Avatar
Michaal.K
Člen
Avatar
Odpovídá na sadlomaslox25
Michaal.K:

Tak jsem to zatím udělal jak jsem psal předtím a zatím to funguje ;-)
Snad budou dobře i ty přechody mezi hodinami a dny...

 
Nahoru Odpovědět 3. června 14:38
Avatar
Odpovídá na Michaal.K
sadlomaslox25:

prechody budou fungovat a opakovani se udela prakticky stejne tak jak si to vyvolat tzn. ze kdyz startOdpoctu - DateTime.Now < 0 tak tak znova vypocitas startOdpoctu.

 
Nahoru Odpovědět 3. června 20:43
Avatar
Michaal.K
Člen
Avatar
Odpovídá na sadlomaslox25
Michaal.K:

Tak snad to funguje. Díky za pomoc.

 
Nahoru Odpovědět 7. června 9:31
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.