[Winforms] كيف يمكنك الحصول على مفتاح إيسك لإغلاق مربع حوار في وينفورمز؟


Answers

للقيام بذلك عندما لم يكن لديك زر إلغاء يمكنك تجاوز بروسسمدكي:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
  if (keyData == Keys.Escape)
  {
    this.Close();
    return true;
  }
  return base.ProcessCmdKey(ref msg, keyData);
}
Question

في كثير من الأحيان عند استخدام البرمجيات في هذه الأيام، فإن مفتاح إيسك إغلاق حوار دون استمرار أي تغييرات قمت بها. أنا أحب ذلك خاصة لأنه على الرغم من أن الحوار قد يكون لها زر إلغاء على ذلك، وأنا لا أريد بالضرورة للوصول إلى الماوس أو علامة التبويب إلى زر إلغاء. انها طريقة نظيفة لطيفة للقول "عفوا، لم يكن يعني أن تفعل ذلك!" إلى البرنامج. في الواقع، أجد أنني تحصل على إزعاج مع البرامج التي لا تنفذ هذه الميزة، وأنا لا أستطيع أن أصدق أنه لم يتم بالفعل تحت غطاء محرك السيارة من وينفورمز - يبدو بديهية بالنسبة لي ...

لقد نظرت في ربط في الحدث كيبريس النموذج، أو محاولة لمحاكاة "إلغاء" ديالوغرسولت الخ يبدو أن هناك عددا من الطرق للتغلب على هذا ...

لذا فإن السؤال هو: ما هي أنظف طريقة الذهاب نحو ربط مفتاح إيسك لإغلاق الحوار دون حفظ أي تغييرات؟

أي مساعدة من تلك التي لديها خبرة في هذا هو محل تقدير كبير!




    If e.KeyCode = Keys.Escape Then
        If MsgBox("Are you sure to exit system (Y/N) ?", MsgBoxStyle.YesNo + MsgBoxStyle.Question) = MsgBoxResult.No Then Exit Sub
        dashboard.Close()

    ElseIf e.KeyCode = Keys.F5 Then
        MessageBox.Show("F5")
    End If

جرب هذا الرجال.هذا هو لعرض مساجيبوكس لتأكيد نعم أو لا قبل إغلاق النماذج.يمكنك إضافة هذه التعليمات البرمجية في النموذج الخاص بك داخل النموذج المسمى باسم كيدون. هنا "لوحة القيادة" هو اسم نموذجنا ليتم إغلاقها. هذا الرمز يظهر لك مربع رسالة مع نعم أو لا أزرار. إذا قمت بتحديد نعم يعني أنه سيتم إغلاق النموذج الخاص بك.إذا قمت بتحديد لا يعني إلغاء الإجراء. يبقى النموذج نفسه




إلى حد ما يعتمد على بيئة التنمية الخاصة بك - في. نيت بنيت في (كما كان في vb.old)، أشكال لديها "إلغاء زر" الخاصية "إذا تم تعيين هذه الخاصية، يتم النقر على زر 'كلما' المستخدم يضغط على مفتاح "إيسك".

هناك خاصية "أسبتسبوتون" المقابلة للمفتاح 'إنتر'.

من الذاكرة، والرسائل القياسية ومربعات الحوار تتبع المنطق أعلاه افتراضيا - على الرغم من بالطبع يمكن للمرء أن يحدد الزر الافتراضي لمربع رسالة حيث كنت لا تريد الاشياء أن يحدث دون أن يؤكد المستخدم بشكل إيجابي أن هذا ما يريدون القيام به .