PDA

View Full Version : جلوگیری از Alt + F4 و بستن فرم بدون استفاده از Close



احمد سامعی
پنج شنبه 11 آبان 1385, 12:41 عصر
دورد و صد بدرود بر مردمان ایران زمین

1. چطور از رویداد Alt + F4 تو برنامه جلوگیری کنم ؟؟؟؟

2. آیا تنها راه خارج شدن از فرم Close هست یا راه بهتری هم هست ؟؟؟
چون وقتی KeyPrewio فرم فعال می کنی با انتر زدن فرم بسته می شه

پایدار باشید.

SabaSabouhi
پنج شنبه 11 آبان 1385, 16:19 عصر
با سلام
براى جلوگیرى از بسته شدن فرم توسط کلید Alt-F4 بهترین راه حل نوشتن کد در رویداد Closing است. این رویداد پس از ارسال فرمان بسته شدن فرم و پیش از انجام شدن آن فراخوانى مى‌شود و شما مى‌توانید با بررسى شرایط بسته شدن فرم در صورت نیاز آن را Cancel کنید.




private void frmMyForm_Closing(object sender, System.ComponentModel.CancelEventArgs e) {
e.Cancel = true;
}



تذکر مهم: این کد بدون کنترل است و باعث مى‌شود که فرم در هیچ شرایطى بسته نشود. شما باید حتماً قبل از Cancel کردن شرط براى عمل کردن یا نکردن رویداد را بررسى کنید.

صبا صبوحى

احمد سامعی
شنبه 13 آبان 1385, 00:22 صبح
با سلام



private void frmMyForm_Closing(object sender, System.ComponentModel.CancelEventArgs e) {
e.Cancel = true;
}


صبا صبوحى[/RIGHT]


با تشکر از شما استاد عزیز

من کد شما رو خیلی ور رفتم ( به قول قدما : کول کول کردم )
و روش کاملش رو پیدا کردم ( می نویسم تا بقیه دوستان هم استفاده کنند.)

مراحل

1. باید اول یک متغیر سراسری تو فرم تعریف کنید ( اگر Bool باشه راحت تر)


private bool close_form = false;

2. کد زیر رو برای( Event ) متد FormClosing فرم مورد نظر تعریف کنید :


#region Disable Alt+F4 for FormClosing

private void MyForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (close_form == true)
{
new FormClosingEventArgs(CloseReason.UserClosing, true);
}
else
{
e.Cancel = true;
}
}
#endregion

3. در هر جا که می خواهید فرم بسته شود ( به هر دلیلی که از قبل در برنامه تعریف کردید مثلا اگر این حالت اتفاق افتاد - مثل زدن کلیدی توسط کاربر - فرم بسته شود ) کد زیر را قبل از متد ()Close اضافه می کنید

close_form = true;

اگر از دوستان کسی اشتباهی مشاهده کرد لطفا راهنمایی کنید.
امیدوارم این کد برای شما هم کار کند.

اگر کسی هم جواب سوال دوم مرا تو این پست می دونه لطفا بفرمائید ؟؟؟؟

Amir Oveisi
یک شنبه 14 آبان 1385, 13:39 عصر
به نظر شما اینجوری بنویسیم مشکلی پیش میاد؟

privatre void Form1_FormClosing(object sender,FormClosingArgs e)
{
if(e.closeReason == closeReason.UserClosing)
e.cancel = true;
}

احمد سامعی
یک شنبه 14 آبان 1385, 20:42 عصر
به نظر شما اینجوری بنویسیم مشکلی پیش میاد؟

privatre void Form1_FormClosing(object sender,FormClosingArgs e)
{
if(e.closeReason == closeReason.UserClosing)
e.cancel = true;
}
من کد خودم رو با کول کول کردن و شانسی پیدا کردم
و نمی دونم از نظر علمی درست یا نه و مشکلی بعدا پیش می یاره یا نه
فعلا که کار می کنه و مشکلی هم نداره
شما هم با توجه به برنامه خودتون کدتون رو امتحان مختلف کنید

hassan181
یک شنبه 06 مهر 1393, 18:45 عصر
سلام
مرسی جناب احسان سامعی
کد شما به درستی کار میکنه