روش اول
یک textbox روی فرم خود قرار دهید . فرض کنیم بخواهیم یک شمارنده معکوس 30 دقیقه ای روی آن داشته باشیم . برای شروع کار ابتدا قطعه کد زیر را در نظر داشته باشید :
public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Timer timeX = new Timer(); timeX.Interval = 1800000; timeX.Tick += new EventHandler(timeX_Tick); } void timeX_Tick(object sender, EventArgs e) { // what do i put here? } }
اگر تمام کاری که می خواهید انجام دهید این است که مقدار Texbox خود را برای شمارش معکوس از 30 دقیقه تنظیم کنید. ابتدا باید اینترول تایمر خود را به چیزی کمتر از 30 دقیقه تغییر دهید. چیزی مثل timeX.Interval = 1000؛ که عمل کردن آن ثانیه به ثانیه ای باشد . سپس رویداد خود را به همین ترتیب تنظیم کنید:
قطعه کدی که در زیر مشاهده می کنید توسط برنامه کامپایلر به جهت تست آزمایش شده و خروجی صحیح مدنظر را بدست آورد.
int OrigTime = 1800; void timeX_Tick(object sender, EventArgs e) { OrigTime--; textBox1.Text = OrigTime/60 + ":" + ((OrigTime % 60) >= 10 ? (OrigTime % 60).ToString() : "0" + OrigTime % 60);
روش دوم
با فرض اینکه تایمر خود را روی این مقدار تنظیم کرده اید می توانید از قطعه کد زیر استفاده نمایید :
set timer interval=1000
minremain=1800000; //Should be in milisecond timerplurg.satrt(); private void timerplurg_Tick(object sender, EventArgs e) { minremain = minremain - 1000; string Sec = string.Empty; string Min = string.Empty; if (minremain <= 0) { lblpurgingTimer.Text = ""; timerplurg.Stop(); return; } else { var timeSpan = TimeSpan.FromMilliseconds(Convert.ToDouble(minremain)); var seconds = timeSpan.Seconds; var minutes = timeSpan.Minutes; if (seconds.ToString().Length.Equals(1)) { Sec = "0" + seconds.ToString(); } else { Sec = seconds.ToString(); } if (minutes.ToString().Length.Equals(1)) { Min = "0" + minutes.ToString(); } else { Min = minutes.ToString(); } string Totaltime = "Purge Remaing Time: " + Min + ":" + Sec; lblpurgingTimer.Text = Totaltime; } }
روش سوم
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace countdowntimer { public partial class Form1 : Form { private Timer timeX; private int minutesLeft; public Form1() { InitializeComponent(); timeX = new Timer(){Interval = 60000}; timeX.Tick += new EventHandler(timeX_Tick); } private void textBox1_TextChanged(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { minutesLeft=30; timeX.Start(); } void timeX_Tick(object sender, EventArgs e) { if(minutesLeft--<=0) { timeX.Stop(); // Done! } else { // Not done yet... } textBox1.Text = minutesLeft + " mins remaining"; } } }
روش چهارم
using System; using System.Windows.Forms; namespace StackOverflowCountDown { public partial class Form1 : Form { public Form1() { InitializeComponent(); textBox1.Text = TimeSpan.FromMinutes(30).ToString(); } private void Form1_Load(object sender, EventArgs e) { } private void textBox1_TextChanged(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { var startTime = DateTime.Now; var timer = new Timer() { Interval = 1000 }; timer.Tick += (obj, args) => textBox1.Text = (TimeSpan.FromMinutes(30) - (DateTime.Now - startTime)) .ToString("hh\\:mm\\:ss"); timer.Enabled = true; } } }
روش پنجم
timeX.Interval = 500; ... TimeSpan timeSpan = TimeSpan.FromMinutes(30); DataTime startedAt = DateTime.Now; void timeX_Tick(object sender, EventArgs e) { if ((DateTime.Now - startedAt)<timeSpan){ Invoke(()=>{ TimeSpan remaining = timeSpan - (DateTime.Now - startedAt); textBox.Text = remaining.ToString(); }); } else timeX.Stop(); }
کدهای بیشتر - سی شارپ
حذف ردیف یا سطر از DataTable در سی شارپ #C
1 Comments