PDA

View Full Version : سوال: تغییر اطلاعات فرم در زمان اجرا؟



fufuli
دوشنبه 22 تیر 1388, 13:14 عصر
با سلام
میخوام توی یک برنامه ویندوزفرمی و توی یک label ،ثانیه ی سیستم رو نشون بدم.
این کد رو برای نمایش 5 ثانیه، توی یک forپنج تایی نوشتم اما موقع اجرا، تا وقتی اجرای for تموم نشده هیچی نمایش نمیده (تا 5 ثانیه) و بعد از اون، فقط پنجمین (آخرین)ثانیه ای رو که خونده، نمایش میده.
اما من میخوام زیاد شدن ثانیه رو همزمان با زیاد شدن واقعی اون، توی فرم ببینم

لطفا راهنمایی فرمایید (خواهشا هرچه زودتر!!)
باتشکر


privatevoid button1_Click(object sender, EventArgs e)
{
int r = 0;
for (int i=0;i<5 ;i++ )
{
Thread.Sleep(1000);

System.DateTime dt = System.DateTime.Now;
label1.Text = "";

label1.Text = Convert.ToString(dt.Second);
if (dt.Second != r)
r = dt.Second;


}
}

h.jaza
دوشنبه 22 تیر 1388, 13:46 عصر
بله، خیلی واضحه که با این کد برنامه کلا n ثانیه متوقفه چون از Thread.Sleep به مدت n ثانیه استفاده کردی.

راه حل های موجود زیاد و متفاوته. مثلا خیلی ساده و بی دردسر می تونی از کنترل Timer استفاده بکنی.

روش کارشم اینجوریه که از Toolbox کنترل Timer رو بنداز روی صفحت، بعد Interval مناسب رو بهش بده، توی رویداد Tick اش کار مورد نظر رو انجام بده و استاپش کن و زمانی که هم که باید شروع بشه، در رویداد اصلی (مثلا کلیک یه باتن) استارتش می کنی.