Timer Tick event azonalli "elsütése", létezik ilyen?
Sziasztok!
Egy ideje küzdök a timer-el, próbálgattam már elég sok megoldást, de csak nem akar összejönni...
Behajítanék ide egy kis gagyi példát amin keresztül elmondom a bajom :) (Form1 ctrl+c,ctrl+v)
Létrehozok egy Labelt, amin szeretném kiírni az "a" változásait. Nos amikor feláll a prog és látom a formot, akkor elindítanám ezt a Vezer() metódust. A lényege az lenne, hogy amikor feliratkozok a myTimer.Tick eseményre az közvetlenül fusson le és ne csak a hívási sor végén. Persze az "if (a == 500)" elhagyásával semmi nem történik, azonnal bezárul az ablak. Ebben kérném a segítségeteket.
UI.: System.Sleep-et ha nem muszáj nem használnék és a Tick else ágában se szívesen hívnám újra a Vezer() metódust. A cél télleg az lenne, hogy a Tick esemény közvetlenül süljön el. (amire sajna nem jó a " myTimer.Start();")
public Form1()
{
InitializeComponent();
label1.Parent = this;
}
static System.Windows.Forms.Timer myTimer = new System.Windows.Forms.Timer();
Label label1 = new Label();
int a = 0;
private void Vezer()
{
myTimer.Interval = 5;
myTimer.Enabled = true;
myTimer.Tick += new EventHandler(myTimer_Elapsed);
myTimer.Start();
if (a == 500)
{
myTimer.Enabled = false;
this.Close();
}
}
private void myTimer_Elapsed(object sender, EventArgs e)
{
if (a < 500)
{
a++;
label1.Text = "";
label1.Text += a;
}
else { myTimer.Stop();}
}
private void Form1_Activated(object sender, EventArgs e)
{
Vezer();
}
Nem értem a problémád. Mért nem hívod meg az eseméynkezelőt te?
A myTyimer.Start() sor után:
myTimer_Elapsed(this, EventArgs.Empty);
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!