PDA

View Full Version : سوال: باز شدن بیش از حد فرم



Faraz Mehraien
جمعه 01 فروردین 1393, 19:07 عصر
با سلام.من یه کد دارم که یه زمان از کاربر می گیره و تا موقعی که با زمان فعلی برابر نشده هیچ اقدامی انجام نده هر وقت برابر شد تو یه فرم دیگه یه پیغامی نمایش بده(که نمایش دادن پیغام موردی نیس)برای اینکار که مدام چک کنه گذاشتمش تو تایمر ولی وقتی به زمان فعلی می رسه 60 بار فرمو باز می کنه(طول مدت 1 دقیقه نمی خوامم کاربر ثانیه وارد کنه) چی کار کنم که فقط یه بار فرم باز شه,,,از متغیر کمکی هم (flag) هم استفده کردم نشد ..alarm یه متغیر که اینجوری تعریفش کردمalarm = DateTime.ParseExact(textBox2.Text, "HH:mm", null);
اینم کدم:
if (alarm.ToShortTimeString() == DateTime.Now.ToShortTimeString()) {
h = 1;
form2 f2 = new form2();
f2.ShowDialog();
a = 0;
}

Mahmoud.Afrad
جمعه 01 فروردین 1393, 20:34 عصر
قبل از ShowDialog تایمر را غیرفعال کنید.

Faraz Mehraien
جمعه 01 فروردین 1393, 22:19 عصر
قبل از ShowDialog تایمر را غیرفعال کنید.ممنون ولی هیچ تغییری نکرد

tooraj_azizi_1035
شنبه 02 فروردین 1393, 20:32 عصر
سلام
باید از کلاس تایمر استفاده کنید:

using System.Threading;




class TimerExample
{


static void Main()
{

alarm = DateTime.ParseExact(textBox2.Text, "HH:mm", null);

TimerCallback timerDelegate =
new TimerCallback(ShowForm);

Timer stateTimer = new Timer(timerDelegate, null, alarm.TimeOfDay, TimeSpan.FromMilliseconds(-1));

}


public void ShowForm(Object stateInfo)
{

this.Invoke (new Action() => {

form2 f2 = new form2();
f2.ShowDialog();
});

}

}

ROSTAM2
پنج شنبه 28 فروردین 1393, 22:02 عصر
با سلام.من یه کد دارم که یه زمان از کاربر می گیره و تا موقعی که با زمان فعلی برابر نشده هیچ اقدامی انجام نده هر وقت برابر شد تو یه فرم دیگه یه پیغامی نمایش بده(که نمایش دادن پیغام موردی نیس)برای اینکار که مدام چک کنه گذاشتمش تو تایمر ولی وقتی به زمان فعلی می رسه 60 بار فرمو باز می کنه(طول مدت 1 دقیقه نمی خوامم کاربر ثانیه وارد کنه) چی کار کنم که فقط یه بار فرم باز شه,,,از متغیر کمکی هم (flag) هم استفده کردم نشد ..alarm یه متغیر که اینجوری تعریفش کردمalarm = DateTime.ParseExact(textBox2.Text, "HH:mm", null); اینم کدم: if (alarm.ToShortTimeString() == DateTime.Now.ToShortTimeString()) { h = 1; form2 f2 = new form2(); f2.ShowDialog(); a = 0; } بعد از دستور ShowDialog تایمر رو غیر فعال کنید و با بستن فرم اونو دوباره فعال کنید!