تعطيل ALT+F4 ولكن السماح بإغلاق النموذج بواسطة رمز ، أقرب. Userclosing لا يساعد
-
27-09-2019 - |
سؤال
أريد أن النموذج لن يغلق بالقيام البديل + F4 لكن اذا Application.Exit()
أو this.Close
يسمى من نفس النموذج ، يجب أن تكون مغلقة.
حاولت CloseReason.UserClosing
ولكن لا يزال لا مساعدة.
المحلول
إذا كنت بحاجة إلى التصفية البديل + F4 الحدث فقط (ترك النقر فوق مربع الإغلاق ، this.Close()
و Application.Exit()
أن أتصرف كالمعتاد) ثم يمكنني أن أقترح ما يلي:
- تعيين النموذج
KeyPreview
خاصية لtrue
; نموذج السلك
FormClosing
وKeyDown
الأحداث:private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (_altF4Pressed) { if (e.CloseReason == CloseReason.UserClosing) e.Cancel = true; _altF4Pressed = false; } } private bool _altF4Pressed; private void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.Alt && e.KeyCode == Keys.F4) _altF4Pressed = true; }
نصائح أخرى
من السهل جدًا القيام بذلك عن طريق المجموعة CropressKeypress خاصية إلى صواب form_keydown EventHandler على النحو التالي.
if (e.KeyCode == Keys.F4 && e.Alt)
{
e.SuppressKeyPress = true;
}
باستخدام هذا ، يمكنك أيضًا إغلاق النموذج النشط الخاص بك عن طريق تعيين خاصية CropressKeypress إلى False على نفس EventHandller أو أي طريقة أخرى.
Capture Alt+F4 Hotkey عن طريق تعيين خاصية KeypReview الخاصة بـ Form إلى طريقة OnProcessCmDkey بشكل صحيح.
كيف استخدمت أقرباء؟
انظر نموذج رمز هنا:http://msdn.microsoft.com/en-us/library/system.windows.forms.form.formclosing.aspx
تحتاج إلى تعيين خاصية إلغاء كائن FormClosingEventArgs الذي تم تمريره لإيقاف إغلاق النموذج.