PDA

View Full Version : اجرای یکی از رویدادهای فرم به وسیله یک دکمه ؟!



saman_h
دوشنبه 22 خرداد 1391, 09:47 صبح
سلام به دوستان
من یسری کد داخل یکی از رویدادهای فرم نوشتم ( مثلا رویداد Closing ) ، حالا میخوام یه دکمه روی فرمم بذارم که وقتی روش کلیک کنم درواقع اون رویداد صدا زده بشه .
درضمن نگید که بیام کدهارو کپی کنم چون که امکان همچین کاری نیست و با یسری مشکلات مواجه میشم ، فقط میخوام همون کاری که گفتم رو به اون صورت انجام بدم
ممنون میشم راهنماییم کنید

behzadkhatari
دوشنبه 22 خرداد 1391, 09:59 صبح
فقط کافیه هر رویدادی رو که خواستین فراخوانی کنید به این شکل
form1_FormClosing(null,null)

saman_h
دوشنبه 22 خرداد 1391, 12:13 عصر
فقط کافیه هر رویدادی رو که خواستین فراخوانی کنید به این شکل
form1_FormClosing(null,null)

سلام دوست عزیز . چیزی که شما نوشتید کدهای درون متد FormClosing که من نوشتم رو اجرا نمیکنه . مستقیم باعث بسته شدن فرم میشه !!
من این کدهارو داخل متد formclosing نوشتم ، میخوام وقتی دکمه ای رو کلیک میکنم این کدها اجرا بشه اما متاسفانه نمیشه این کدهارو توی اون دکمه کپی کرد چون وقتی دکمه کلیک بشه هم کد دکمه اجرا میشه هم متد formClosing و باعث میشه ارور بده و ... !!
این هم کد من :
DialogResult result2 = MessageBox.Show("Are You Want To Exit ?", "System Message !", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result2 == DialogResult.No)
{
e.Cancel = true;
}
else
{

Application.Exit(0);
}

چیزی که شما نوشتید درسته فکرکنم اما مقادید داخلش نباید null باشه . ممنون میشم راهنماییم کنید

tooraj_azizi_1035
دوشنبه 22 خرداد 1391, 12:35 عصر
سلام به مقدار دو پارامتر رو اینطوری ست کن:

form1_FormClosing(this, new CancelEventArgs());

و به جای Are You Want To Exit بنویس Do you want to exit?.

behzadkhatari
دوشنبه 22 خرداد 1391, 12:39 عصر
کدی که به شما گفتم رو تو رویداد کلیک دکمه تون بذارید. من بهتون اطمینان میدم که فرم بسته نخواهد شد و فقط کدهای داخل رویداد formclosing اجرا میشن بدون اینکه فرم بسته بشه.
در ضمن در مورد کد بالا بگم که اصالا شما نیازی به فراخوانی رویداد formclosing ندارید. فقط کافیه تو رویداد کلیک دکمه بنویسید this.close(); رویداد formclosing خودش اجرا میشه

Mahmoud.Afrad
دوشنبه 22 خرداد 1391, 12:54 عصر
اگر null باشه وقتی روی باتن کلیک بشه روی e.Cancel = true خطا میگیره. Application.Exit(0); هم باعث فراخوانی مجدد فرمکلوزینگ میشه میتونید از این استفاده کنید
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("Are You Want To Exit ?", "System Message !", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
{
e.Cancel = true;
}
else
{
Environment.Exit(0);
}
}

private void button11_Click(object sender, EventArgs e)
{
Form1_FormClosing(null, new FormClosingEventArgs(CloseReason.ApplicationExitCa ll, false));
}پست 5 هم تایید میشه.

Hossenbor
دوشنبه 22 خرداد 1391, 14:19 عصر
دوست عزیز من منظور شما رو متوجه نشدم اگه میخواین کدایه رویداد فرم کلوزینگ اجرا بشه این کدو به کدهایه باتن اضافه کنین
this.close();
و اگر منظورتون کدهایه تویه فرم کلوزینگه اونا رو تو یک تابع دیگه وارد کنین بعد اون تابع رو هم تو فرم کلوزینگ هم تو کدایه باتن اضافه کنین درسته؟

saman_h
چهارشنبه 24 خرداد 1391, 12:50 عصر
سلام به مقدار دو پارامتر رو اینطوری ست کن:

form1_FormClosing(this, new CancelEventArgs());

و به جای Are You Want To Exit بنویس Do you want to exit?.

ممنون ازپاسختون اما ارور میده !! خودتون امتحانش کنید ...

saman_h
چهارشنبه 24 خرداد 1391, 12:52 عصر
اگر null باشه وقتی روی باتن کلیک بشه روی e.Cancel = true خطا میگیره. Application.Exit(0); هم باعث فراخوانی مجدد فرمکلوزینگ میشه میتونید از این استفاده کنید
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("Are You Want To Exit ?", "System Message !", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
{
e.Cancel = true;
}
else
{
Environment.Exit(0);
}
}

private void button11_Click(object sender, EventArgs e)
{
Form1_FormClosing(null, new FormClosingEventArgs(CloseReason.ApplicationExitCa ll, false));
}پست 5 هم تایید میشه.


تشکر درست بود . مرسی

saman_h
پنج شنبه 25 خرداد 1391, 14:11 عصر
سلام به مقدار دو پارامتر رو اینطوری ست کن:

form1_FormClosing(this, new CancelEventArgs());

و به جای Are You Want To Exit بنویس Do you want to exit?.

ازوز میده ...

Mahmoud.Afrad
پنج شنبه 25 خرداد 1391, 15:28 عصر
بالاخره نفهمیدیم کارتون راه افتاد یا نه؟!!. به هر حال اگر فقط میخواید formclosing رو فراخوانی کنید که همانطور که دوستان گفتند با this.close(); فراخوانی میشه. اگر هم رویداد دیگه ای مدنظر هست که باید خود رویداد با پارامترهای مناسب فراخوانی بشه.

saman_h
پنج شنبه 01 تیر 1391, 11:25 صبح
آره عزیزم کارم راه افتاد ... راستش مشکل خیلی تخیلیه !!! من اون کد رو که خودم نوشتم داخل رویداد Form_Closing مینویسم حالا با هر دستوری که ببندم برنامه رو اون پیغام میاد و درست کار میکنه . مساله اصلی ابنجاس که هرکدوم از اون کدهایی که گفتید رو داخل دکمه میذارم بازهم از خط Environment.exit(0); ارور میده اما اگه با دکمه Close فرم رو ببندم مشکلی نداره . یا حتی اینکه وقتی داخل منو یه گزینه Exit گذاشتم و اون توابع رو به صورت هایی که گفتید فراخوانی کردم یا از this.close() و ... استفاده کردم مشکل نداشت و ارور نمیداد !!!! مشکل فقط دکمه هه هس × نمیدونم چرا الکی داره ارور میده ... اصلا یوقتایی ارور میده یوقتایی نمیده ... واقغا مسخرس ... اگه کسی ایده ای داره یا به این مشکل برخورده ممنون میشم راهنماییم کنه وگرنه دکمه رو کلا حذف میکنم
با تشکر ...