ورود

View Full Version : stop watch



simaemadi
سه شنبه 21 آذر 1391, 08:56 صبح
سلام کسی توی WPF کرنومتر نوشته ؟میشه به من کمک کنید؟

alihassanabadi
سه شنبه 21 آذر 1391, 10:10 صبح
سلام آره
میتونی از کلاس های DispatcherTimer ,و کلاس Stopwatch استفاده کنی
و برای شی ی که از نوع stopwatch هست یک هندلر تعریف کنی
مثال


DispatcherTimer dispatcher = new DispatcherTimer();
Stopwatch sw = new Stopwatch();
string time = string.Empty;

حالا باید هندلرشو تعریف کنی
و البته interval تایمر هم ست کنی
مثل



dispatcher.Tick += new EventHandler(dispatcher_Tick);
dispatcher.Interval = new TimeSpan(0, 0, 0, 0, 1);


البته کد بالا رو تو متد سازنده windows بنویس
بعد پیادی سازی هندلر


void dispatcher_Tick(object sender, EventArgs e)
{
if (sw.IsRunning)
{
TimeSpan timespan = sw.Elapsed;
time = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
timespan.Hours, timespan.Minutes, timespan.Seconds, timespan.Milliseconds / 10);
اینجا میتونی مقدار تایم رو توی یک لیبل نمایش بدی
}
}

حالا با یه باتون میشه start کرد و یه دکمه دیگه stop
رویداد کلیک دکمه شروع


sw.Start();
dispatcher.Start();

و رویداد کلیک دکمه stop


if (sw.IsRunning)
sw.Stop();

و در نهایت هم میتونی یه باتون بزاری برای ریست کردنش
رویداد کلیک دکمه ریست


sw.Reset();
sw.Start();

توجه داشته باش که متغییر time از نوع رشته است و پابلیک هم هست
میتونی یه لیست باکس هم بزاری که هر بار مثلا دکمه اضافه رو زد مقدار time رو به لیت باکس اضافه شه
با تشکر

simaemadi
چهارشنبه 22 آذر 1391, 16:11 عصر
مرسی از پاسختون دوست عزیز ولی من نتونستم کلاس های DispatcherTimer و stopwatch رو پیدا کنم؟ کلاس های سیستمی هست یا باید خودمون کلاس تعریف کنیم براش؟
تشکر

alihassanabadi
چهارشنبه 22 آذر 1391, 16:15 عصر
خواهش میکنم
نه نیازی به تعریف کردنشون نیست سیستمی هستند
این دوتا رو به لیست using هات اضافه کن


using System.Windows.Threading;
using System.Diagnostics;

اولی برای DispatcherTimer
دومی هم برای StopWatch