در این آموزش قصد داریم تا به کمک Timer، یک کرونومتر طراحی کنیم. بنابراین قبل از هرچیزی بهتر است روی «اینجا» کلیک کرده و با تایمر آشنا شوید.
مراحل انجام کار
1- یک Timer به پروژهی خود اضافه کرده و آن را به صورت پیشفرض غیرفعال کنید. سپس مقدار Interval آن را برابر یک ثانیه، یعنی 1000 قرار دهید.
2- یک Label نیز به فرم اضافه کنید تا زمان را روی آن نمایش دهیم.
3- یک دکمه برای «شروع/توقف/ادامه» کرونومتر و یک دکمه برای توقف آن به فرم اضافه کنید.
نام دکمه شروع را buttom1 و دکمه تنظیم مجدد را button2 در نظر میگیریم.
4- چینش روی فرم را به صورت زیر انجام دهید:
قرار است وقتی روی «شروع» کلیک شد، کرونومتر فعال و شروع به کار کردن کند؛ و متن دکمه به «توقف» تغییر پیدا کند؛ سپس اگر روی «توقف» کلیک شد، متن آن به «ادامه» تغییر پیدا کرده و در صورت کلیک روی «ادامه» نیز کرونومتر از جایی که متوقف شده است، ادامه پیدا کند. با کلیک روی «تنظیم مجدد» نیز همه چیز ریست خواهد شد.
رویداد کلیک دکمهها و تیک تایمر به صورت زیر نوشته خواهد شد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
int seconds = 0; int minutes = 0; int hours = 0; private void button1_Click(object sender, EventArgs e) { if (timer1.Enabled) { timer1.Enabled = false; button1.Text = "ادامه"; } else { timer1.Enabled = true; button1.Text = "توقف"; } } private void button2_Click(object sender, EventArgs e) { timer1.Enabled = false; label1.Text = "00:00:00"; button1.Text = "شروع"; seconds = 0; minutes = 0; hours = 0; } private void timer1_Tick(object sender, EventArgs e) { if (seconds == 60) { seconds = 0; if (minutes == 60) { minutes = 0; hours++; } else { minutes++; } } else { seconds++; } label1.Text = (hours > 9 ? hours + "" : "0" + hours) + ":" + (minutes > 9 ? minutes + "" : "0" + minutes) + ":" + (seconds > 9 ? seconds + "" : "0" + seconds); } |
فیلدهای seconds، minutes و hours برای نگهداری مدت زمان سپری شده میباشند.
رویداد دکمه شروع/توقف/ادامه
ابتدا بایستی بررسی کنیم که تایمر فعال است یا خیر!
اگر فعال باشد:
- تایمر غیرفعال شود.
- متن دکمه به «ادامه» تغییر کند.
اگر غیرفعال باشد:
- تایمر فعال شود.
- متن دکمه به توقف تغییر کند.
رویداد دکمه تنظیم مجدد
تمام موارد را به مقدار اولیه خود برمیگردانیم:
- غیرفعال کردن تایمر
- 00:00:00 کردن محتوای نمایشی
- تغییر متن دکمه اول به «شروع»
- 0 کردن زمان سپری شده (فیلدها، ساعت/دقیقه/ثانیه)
رویداد تیک تایمر
از آنجایی که این رویداد در هر یک ثانیه یک بار قرار است اجرا شود، ما نیز به صورت زیر عمل میکنیم:
ابتدا بررسی میکنیم که آیا ثانیه به 60 رسیده است یا خیر! اگر به 60 نرسیده بود مقدار آن را یکی اضافه کند اما اگر به 60 رسیده باشد، دیگر نباید مقدار ثانیه زیاد شود و بایستی دقیقه زیاد شود! بنابراین ثانیه را 0 کرده و سپس بررسی میکنیم که آیا دقیقه به 60 رسیده است یا خیر! در نهایت اگر دقیقه نیز به 60 نرسیده بود مقدار آن یکی اضافه گشته و اگر به 60 رسیده باشد، مقدار آن 0 شده و مقدار ساعت افزایش مییابد.
در انتها بایستی مقدار label را به روز رسانی کنیم! در اینجا ما هرکدام را بررسی میکنیم که اگر مقدارش زیر 10 بود، یک 0 نیز به کنار آن اضافه شود تا نمایشگر به صورت دو رقمی اعداد را نمایش دهد.
عالی بود ممنون