View Full Version : نمایش پیغام ثبت اطلاعات بعد از مدت زمانی خاص
mahdi_7610
سه شنبه 15 اردیبهشت 1388, 00:18 صبح
سلام
فرض کنید قصد وارد کردن اطلاعات توی دیتابیس را داریم .
و بعد از زدن دکمه insert یک پیغام نمایش داده میشه به صورت زیر
messagebox.show ("اطلاعات ثبت شد");
میخوام بعد از مدت زمانی که خودم تعین می کنم این پیغام نمایش داده بشه .
یعنی به محض اینکه اطلاعات توی دیتابیس ثبت شد نمایش داده نشه و مثلا بعد از 5 ثانیه این پیغام نمایش داده بشه .
ممنون
rnm123
سه شنبه 15 اردیبهشت 1388, 01:16 صبح
خوب دوست عزیز از تایمر استفاده نمائید . بعد از دستور insert تایمر را فعال نمائید و پیغام فوق را نمایش دهید و سپس تایمر را دوباره غیرفعال نمائید
babak.h
سه شنبه 15 اردیبهشت 1388, 01:31 صبح
سلام
برای این کار می تونید از timer استفاده کنید :
روش کار :
1-یک تایمر به برنامه اضافه کنید
2- interval آن را برابر زمان مورد نظر قرار دهید (مثلا 5000 میلی ثانیه)
3- در eventHandler مربوط به tick آن پیغام را نمایش دهید.
4- بجای خطی که الآن messageBox را نمایش می دهد، timer را Start کنید.
مثال کد :
تعریف تایمر :
در کلاس فرم بنویسید :
System.Windows.Forms.Timer delayTimer = new System.Windows.Forms.Timer();
delayTimer.Interval = 5000;
تعریف eventHandler مربوط به tick :
در ادامه کد فوق بنویسید :
delayTimer.Tick += new System.EventHandler(this.delayTimer_Tick);
private void delayTimer_Tick(object sender, EventArgs e)
{
MessageBox.Show("Arbitrary Message");
delayTimer.Stop();
}
حال کافیست در جایی که قبلا MessageBox را نمایش می دادید بنویسید :
delayTimer.Start();
به این ترتیب هربار که شما تایمر را Start می کنید بعد از 5 ثانیه (اولین تیک) پیغام نمایش داده می شود.
نکته اینجاست که هر بار که شما تایمر را Start می کنید فقط یکبار پیغام نمایش داده می شود چون بعد از نمایش پیغام، تایمر خودش را Stop می کند.
موفق باشید
sd.CSharpProgrammer
سه شنبه 15 اردیبهشت 1388, 01:50 صبح
با سلام خدمت دوستان
دوست عزیز وقتی میشه اینکار رو با یک خط کد انجام داد دیگه چه نیازی هست به Timer؟!
دستور زیر یک وقفه 5000 میلی ثانیه تولید میکنه :
System.Threading.Thread.Sleep(5000);
موفق باشی
babak.h
سه شنبه 15 اردیبهشت 1388, 01:55 صبح
سلام
استفاده از Sleep در این مورد اصلا توصیه نمی شه به این دلیل که با دستوری که شما نوشتید، کل thread به مدت 5 ثانیه قفل می شود اما با استفاده از تایمر، در فاصله زمانی بین tick ها فرم اصلی قابل استفاده باقی می ماند.
NewFoxStudent
سه شنبه 15 اردیبهشت 1388, 11:42 صبح
میتونی متد اینسرت رو توی یه thread دیگه انجام بدی و اون رو به مدت دلخواه متوقف کنی و بعد ازش یه پیغام به thread اصلی بفرستی
میتونی از دستور wait توی sql استفاده کنی
و خیلی راههای دیگه
ولی اصلا چرا میخوای اینطوری باشه
mahdi_7610
چهارشنبه 16 اردیبهشت 1388, 19:24 عصر
سلام
برای این کار می تونید از timer استفاده کنید :
روش کار :
1-یک تایمر به برنامه اضافه کنید
2- interval آن را برابر زمان مورد نظر قرار دهید (مثلا 5000 میلی ثانیه)
3- در eventHandler مربوط به tick آن پیغام را نمایش دهید.
4- بجای خطی که الآن messageBox را نمایش می دهد، timer را Start کنید.
مثال کد :
تعریف تایمر :
در کلاس فرم بنویسید :
System.Windows.Forms.Timer delayTimer = new System.Windows.Forms.Timer();
delayTimer.Interval = 5000;
تعریف eventHandler مربوط به tick :
در ادامه کد فوق بنویسید :
delayTimer.Tick += new System.EventHandler(this.delayTimer_Tick);
private void delayTimer_Tick(object sender, EventArgs e)
{
MessageBox.Show("Arbitrary Message");
delayTimer.Stop();
}
حال کافیست در جایی که قبلا MessageBox را نمایش می دادید بنویسید :
delayTimer.Start();
به این ترتیب هربار که شما تایمر را Start می کنید بعد از 5 ثانیه (اولین تیک) پیغام نمایش داده می شود.
نکته اینجاست که هر بار که شما تایمر را Start می کنید فقط یکبار پیغام نمایش داده می شود چون بعد از نمایش پیغام، تایمر خودش را Stop می کند.
موفق باشید
سلام
من که delayTimer را داخل کلاس فرم new تعریف می کنم دیگه توی کلاس فرم قادر نیستم به delayTimer دسترسی داشته باشم .
چه طور میشه که delayTimer.Interval = 5000; را داخل کلاس فرم تعریف کنم ؟
plz help
NewFoxStudent
چهارشنبه 16 اردیبهشت 1388, 19:29 عصر
این تایمر رو کجای کلاس فرم تعریف میکنید
mahdi_7610
چهارشنبه 16 اردیبهشت 1388, 20:25 عصر
این تایمر رو کجای کلاس فرم تعریف میکنید
توی قسمت partial class تعریف می کنم :متفکر:
NewFoxStudent
چهارشنبه 16 اردیبهشت 1388, 20:36 عصر
اگه بعد از خط زیر تعریف کنی همه جای کلاس میتونی استفاده کنی
public partial class Form1 : Form
{
mahdi_7610
چهارشنبه 16 اردیبهشت 1388, 20:46 عصر
اگه بعد از خط زیر تعریف کنی همه جای کلاس میتونی استفاده کنی
public partial class Form1 : Form
{
نه دسترسی ندارم .
یعنی وقتی Timer delyTimer = new Timer(); را توی همون قسمتی که شما گفتید تعریف میکنم دیگه به delayTimer.Interval = 5000; دسترسی ندارم
یعنی لیستی که باز میشه delayTimer را نداره
plz help
NewFoxStudent
چهارشنبه 16 اردیبهشت 1388, 20:59 عصر
ببینید شما تعریف تایمر رو باید اونجا انجام بدید
برای تنظیم خصوصیت هاش حتماً باید از یک متد استفاده کنید
نمیتونید توی خط بعد از تعریف تایمر مثلا اینتروال رو تنظیم کنید
باید توی یه متد مثل فرم لود اینکار رو انجام بدید
mahdi_7610
چهارشنبه 16 اردیبهشت 1388, 22:31 عصر
ببینید شما تعریف تایمر رو باید اونجا انجام بدید
برای تنظیم خصوصیت هاش حتماً باید از یک متد استفاده کنید
نمیتونید توی خط بعد از تعریف تایمر مثلا اینتروال رو تنظیم کنید
باید توی یه متد مثل فرم لود اینکار رو انجام بدید
سلام
خب من این کار را میکنم . اما پیغام هر 5 ثانیه نشون داده میشه . این پیغام باید فقط یکبار نشون داده بشه
اینا توی کلاس فرم تعریف میکنم.
System.Windows.Forms.Timer delayTimer = new System.Windows.Forms.Timer();
و اینا را توی فرم load تعریف میکنم
delayTimer.Interval = 5000;
delayTimer.Tick += new System.EventHandler(this.delayTimer_Tick);
حتی یک متد هم تعریف میکنم و کدهای بالا را داخلش قرار میدم ولی باز هم هر 5 ثانیه پیغام تکرار میشه .
بقیه هم که مشخصه سرجای خودشون تعریف میشن .
این پیغام فقط باید یکبار داده بشه .
plz help لطفا
seven7777777
پنج شنبه 17 اردیبهشت 1388, 03:07 صبح
خوب شما در همون رویداد تایمر که ایجاد کردی بعد از نمایش پیغام تایمر خوتو غیر فعال کن تا دوباره تایمرت تیک نخوره .
mahdi_7610
پنج شنبه 17 اردیبهشت 1388, 12:37 عصر
سلام
مشکل حل شد . اما من یه چیزی را متوجه نشدم .
من دستور را که به صورت زیر می نویسم پیغام بعد از 2 ثانیه فقط یکبار نمایش داده می شود
private void timer1_Tick(object sender, EventArgs e)
{
delyTimer.Stop();
MessageBox.Show("اطلاعات ثبت شد");
}
اما وقتی دستور را به صورت زیر تعریف میکنم پیغام هر 2 ثانیه تکرار میشود .
private void timer1_Tick(object sender, EventArgs e)
{
MessageBox.Show("اطلاعات ثبت شد");
delyTimer.Stop();
}
چه فرقی بین این دو دستور وجود داره ؟؟
ممنون
seven7777777
پنج شنبه 17 اردیبهشت 1388, 17:45 عصر
شاید در حالت دوم منتظر می مونه شما مسیج باکس رو تایید کنی که در این حالت 2 ثانیه می گذره و قبل از اینکه غیر فعال بشه یه تیک دیگه می خوره !!!
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.