PDA

View Full Version : سوال: چگونگی ساخت یک تایمر



f.beigirad
یک شنبه 03 دی 1391, 00:56 صبح
با سلام.

نمیدونم عنوان تاپیکم مناسبه یا نه.
به هر حال ببخشید.

میخوام یه تایمر بسازم که از 15 دقیقه شروع شه و وقتی 15 دقیقه به پایان رسید کارنامه آزمون رو نشون بده.
از این تایمر برای یه آزمون میخوام استفاده کنم که لحظه به لحظه از مقدارش کم شه.

والا 100تا کرنومتر پیدا کردم ولی مطلبی راجع به این موضوع نبود.
ممنون از دوستان

ara_tz
یک شنبه 03 دی 1391, 09:18 صبح
سلام
دوست عزیز شما میتونی یک تایمر بزاری با مقدار Interval=1000 که میشه یک ثانیه ویه متغیر تعریف کنی و مقدار 900 رو توش بزاری و بعد با هر بار پالس تایمر یک واحد ازش کم کنی! هروقت به صفر رسید بره کارنامه رو نشون بده.

f.beigirad
پنج شنبه 07 دی 1391, 14:24 عصر
با سلام.من زیاد متوجه نشدم .میشه بیشتر توضیح بدین؟

یا یه مثال کوچولو بزنید.

میتونم کرنومتر (اضافه شدن زمان ) رو بنویسم اما به مشکل میخورم موقع نوشتن اینکه از 15 دقیقه شروع کنه و کم شه.

با تشکر

f.beigirad
پنج شنبه 07 دی 1391, 15:29 عصر
یکی نیست لطف کنه در حقم و بگه چطور بنویسم؟؟؟؟

Y_Safaiee
پنج شنبه 07 دی 1391, 15:43 عصر
سلام دوست من

چندتا راه هست اما ساده ترین راه اینه :



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 WindowsFormsApplication5
{
public partial class Form1 : Form
{
int h = 0, m = 0, s = 0;
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{

}

private void button1_Click_1(object sender, EventArgs e)
{
h = int.Parse(txt_hour.Text);
m = int.Parse(txt_min.Text);
s = int.Parse(txt_sec.Text);
timer1.Interval = 1000;
timer1.Enabled = true;
}

private void timer1_Tick(object sender, EventArgs e)
{
if (h == 0 && m == 0 && s == 0)
{
timer1.Enabled = false;
MessageBox.Show("ok");
}
s--;
if (s == 0 && m>0)
{
s = 60;
m--;
}

if (m == 0 && h>0)
{
m = 59;
h--;
}
label1.Text = string.Format("{0}:{1}:{2}", h, m, s);
}
}

}



موفق باشی
بایت بایت

f.beigirad
پنج شنبه 07 دی 1391, 16:35 عصر
با تشکر از Youuness

واقعا ممنونم.لازم به ذکره یه کوچولو کد بخش timer_tick رو تغییر بدم تا تایمر به درستی کار کنه :
چون اگه تغییر نکنه تایمر دچار مشکل میشه:
private void timer1_Tick(object sender, EventArgs e)
{
if (h == 0 && m == 0 && s == 0)
{
timer1.Enabled = false;
MessageBox.Show("ok");
}

if (s!=0)
{
s--;
}

if (s == 0 && m>0)
{
s = 60;
m--;
}

if (m == 0 && h>0)
{
m = 59;
h--;
}
label1.Text = string.Format("{0}:{1}:{2}", h, m, s);
}

موفق باشید دوستان

mosy_m.s
پنج شنبه 07 دی 1391, 19:03 عصر
منم در مورد تایمر یه سوال داشتم.
من می خوام یه تایمری داشته باشم که دقتش صدم ثانیه باشه.
خودم برای نوشتنش یه تایمر گذاشتم که هر 0.01 ثانیه یک بار به یه متغیری 0.01 تا اضافه میکنه و عدد اون متغیر رو تو یه لیبل نشون می ده. ولی اشکالش اینه که چون این عملیات طول میکشه اصلا دقیق نیست و مثلا بعد از 10ثانیه 6.5 ثانیه نشون می ده. البته من رفتم دقت برنامه رو 0.1 کردم و خیلی دقیق شد ولی خوب من یه تایمر صدم ثانیه می خوام.

f.beigirad
پنج شنبه 07 دی 1391, 19:22 عصر
با سلام
من برای پروژم یه تایمر 15 دقیقه ای نیاز داشتم.
از همین کد استفاده کردم با یکم تغییرات :
برای متد باتنم :
private void button6_Click(object sender, EventArgs e)
{
m = 01;
s = 00;
ss = 00;
timer1.Interval = 10;
timer1.Enabled = true;
}
و برای متد timer1_Tick
private void timer1_Tick(object sender, EventArgs e)
{
if (m == 0 && s == 0 && ss == 0)
{
timer1.Enabled = false;
MessageBox.Show("ok");
}
if (ss != 0)
{
ss--;
}

if (ss == 0 && s > 0)
{
ss = 60;
s--;
}
if (s == 0 && m > 0)
{
s = 60;
m--;
}
lbl1.Text = String.Format("{0}:{1}:{2}", m, s, ss);
}

موفق باشید

f.beigirad
پنج شنبه 07 دی 1391, 19:36 عصر
در ضمن یادآور شم که مقدار Interval از طریق پروپرتی تایمر هم قابل دسترسیه
و مقدارش برحسب هزارم ثانیه محاسبه میشه.

هر 1000هزارم ثانیه =یک ثانیه
و هر 10 هزارم ثانیه هم میشه همون 0.01ثانیه ای که میخواستی.

امیدوارم اطلاعاتم بدردت بخوره.

موفق باشی

mosy_m.s
پنج شنبه 07 دی 1391, 20:33 عصر
خوب من خودم اینارو می دونم. ولی مشکلم اینه که من تو برنامه ام به یه متغیر دابل در هر 0.01 ثانیه 0.01 تا اضافه میشه ولی در آخر تایمر تاخیر داره. حالا می خوام بدونم اشکالش چیه.

public partial class Form1 : Form
{
double dblTime;
bool time = false;

public Form1()
{
InitializeComponent();
}

private void btnOK_Click(object sender, EventArgs e)
{
if (time == false)
{
timer1.Enabled = true;
time = true;
}
else if (time == true)
{
timer1.Enabled = false;
lblTime.Text = dblTime.ToString();
time = false;
}
}

private void timer1_Tick(object sender, EventArgs e)
{
dblTime += 0.01;
lblTime.Text = dblTime.ToString();
}

private void button1_Click(object sender, EventArgs e)
{
timer1.Enabled = false;
time = false;
dblTime = 0;
lblTime.Text = "0.00";
}
}
}


به نظرم اشکالش فقط در کند بودن عمل پردازشه.

f.beigirad
پنج شنبه 07 دی 1391, 21:56 عصر
:متفکر::متفکر::متفکر::متفکر:: تفکر::متفکر:

mosy_m.s
پنج شنبه 07 دی 1391, 22:32 عصر
:متفکر::متفکر::متفکر::متفکر:: تفکر::متفکر:
یعنی چی؟:گیج:

f.beigirad
جمعه 08 دی 1391, 12:08 عصر
یعنی در حال تفکرم.

دادا میشه بگی این کاری که میخوای بکنی برای چیه؟

mwpy20
جمعه 08 دی 1391, 23:53 عصر
چه طور میتونم ساعت لحظه ای سیستمم و روی فرم داخل تکس باکس داشته باشم و بازدن دکمه ثبت داخل بانک اطلاعاتیم ذخیره بشه

f.beigirad
شنبه 09 دی 1391, 02:51 صبح
با سلام.

الآن با گوشي آن شدم و دارم جواب ميدم.
ابتدا يه سرچ کن تو همين فروم و چگونگي بدست آوردن ساعت لحظه اي سيستم رو بدست بيإر.
بعدش اين مقدارو بريز توي يه متغيرو هربار ک ميخواي اطلاعات جديدي رو بريزي توي ديتابيس مقدار اون متغير هم به پارامتر هات اضافه کن.
به همين سادگي.
شبت بخير

f.beigirad
شنبه 09 دی 1391, 03:23 صبح
درود

DateTime time=DateTime. Now ;
//نمایش با جعبه پیغام
MessageBox. Show ) time. ToString ) ( ( ;

ببخشيد نتونستم درست ويرايش کنم.چون برازر گوشيم ويرايش نميده.

موفق باشي

mosy_m.s
شنبه 09 دی 1391, 11:41 صبح
یعنی در حال تفکرم.

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