PDA

View Full Version : ایجاد Timer با for



Salah Sanjabian
پنج شنبه 21 مرداد 1389, 10:52 صبح
دوستان این کد رو ببینید،میخوام به صورت دستی یه وقفه داشته باشیم.یعنی مثلا هر 2 ثانیه رنگ Button2 تغییر کنه

به حلقه ها توجه کنید من میخام یه Delay اتفاق بیفته ولی نمیدونم چرا درست کار نمیکنه
البته مقدار حلقه رو با 1000 هم امتحان کردم


private void button1_Click(object sender, EventArgs e)
{
while (1 == 1)
{
CounterWhile++;
Counter = 0;
if (button2.BackColor == Color.Cyan)
{
for (int i = 0; i <= 100; i++)
{
Counter = 0;
for (int j = 0; j <= 100; j++)
for (int k = 0; k <= 100; k++)
Counter++;

}
button2.BackColor = Color.Red;
}

else
{
for (int i = 0; i <= 100; i++)
{
Counter = 0;
for (int j = 0; j <=100 ; j++)
for (int k = 0; k <= 100; k++)
Counter++;

button2.BackColor = Color.Cyan;
}
}
if (CounterWhile == 50000)
break;
}
}

ricky22
پنج شنبه 21 مرداد 1389, 11:02 صبح
کد فرضی زیر که من نوشتم Colors یک آرایه هست.
int Counter;
private void timer1_Tick(object sender, EventArgs e)
{
Counter++;
this.BackColor = Colors[Counter];
}

private void Form1_Load(object sender, EventArgs e)
{
Counter = 0;
}

exlord
پنج شنبه 21 مرداد 1389, 11:05 صبح
روشی که رفتین خیلی اشتباهه ....


private void button1_Click(object sender, EventArgs e)
{
Timer t = new Timer();
t.Interval = 2000;
t.Tick += new EventHandler(t_Tick);
t.Enabled = true;
t.Start();
}

void t_Tick(object sender, EventArgs e)
{
button2.BackColor = (button2.BackColor == Color.Yellow ? Color.Red : Color.Yellow);
}

Salah Sanjabian
پنج شنبه 21 مرداد 1389, 11:22 صبح
روشی که رفتین خیلی اشتباهه ....


private void button1_Click(object sender, EventArgs e)
{
Timer t = new Timer();
t.Interval = 2000;
t.Tick += new EventHandler(t_Tick);
t.Enabled = true;
t.Start();
}

void t_Tick(object sender, EventArgs e)
{
button2.BackColor = (button2.BackColor == Color.Yellow ? Color.Red : Color.Yellow);
}


ممنون از جوابت.
با تایمر این کارو کردم.مشکلی نیست
میخواستم ببینم اگه بخوای خودت دستی این کارو بکنی باید چه کار کنی؟


داره یه جورایی بدم میاد از C#
برگردیم به همون C++

ایمان مدائنی
پنج شنبه 21 مرداد 1389, 11:30 صبح
دوستان حالا مگه استفاده از تايمر چه اشكالي داره ؟؟:متفکر:

farhad_esfandiar
پنج شنبه 21 مرداد 1389, 11:55 صبح
Sub delay(interval As String)
Dim c
c = Timer
Do While Timer - c < Val(interval)
DoEvents
Loop
End Sub
من این کدرو توی وی بی دارم ولی موقعی که خواستم به سی شارپ تبدیلش کنم
برای DoEvents معادلی پیدا نکردم

farhad_esfandiar
پنج شنبه 21 مرداد 1389, 12:01 عصر
کدی که exlord گذاشته یه جورایی عملکردش شبیه همین کده.:کف:

Salah Sanjabian
پنج شنبه 21 مرداد 1389, 18:13 عصر
دوستان حالا مگه استفاده از تايمر چه اشكالي داره ؟؟:متفکر:


اشکال که نداره

همین جوری میخواستم Delay رو داشته باشتم
ولی نمیدونم چرا میفته تو Loop ?