كيف يمكنني إضافة رمز إلى زر الخروج في نموذج AC #؟

StackOverflow https://stackoverflow.com/questions/904345

  •  05-09-2019
  •  | 
  •  

سؤال

أنا أستخدم Microsoft Visual C # 2008 Express.

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

شكرا!

-adeena.

هل كانت مفيدة؟

المحلول

عند استخدام حدث ForumClosing يجب أن يمسك بأي طريقة لإغلاق النموذج.

نصائح أخرى

في طريقة العرض "تصميم" للنموذج الخاص بك، ضمن نافذة الخصائص، حدد زر الأحداث والتمرير لأسفل إلى أحداث "Formoslosed" و "ForumClosing".

يتم استدعاء formclososed بعد إغلاق النموذج.

يتم استدعاء ForumClosing قبل إغلاق النموذج وتسمح لك أيضا بإلغاء الإغلاق، والحفاظ على النموذج مفتوح:

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    e.Cancel = true;
}

إذا كنت ترغب في طرح المستخدم "هل أنت متأكد من أنك تريد إغلاق هذا النموذج؟"، ثم استخدم FormClosing, ، حيث يمكنك ضبط Cancel = True وسيظل النموذج مفتوحا.

إذا كنت ترغب في إغلاق بعض المورد فقط عندما يتم إغلاق النموذج بالتأكيد، فأنت تستخدم FormClosed حدث.

إذا كنت تتحكم في الكود بالكامل، فهو لا يهم. ولكن ما لا تريد أن يحدثه هو تنظيف الموارد باستخدام FormClosing عندما يحتفظ المعالج الآخر في الحدث في فتح النموذج.

يتيح لك ForumClosing / Formorlosed مشاهدة الحدث لهذا النموذج الذي قد يتزامن مع الخروج من التطبيق. ومع ذلك، هناك حدث آخر يمكنك السخون يسمى Application.ApplicationExit.

في طريقتك الرئيسية:

Application.ApplicationExit += Application_ApplicationExit;

...

private static void Application_ApplicationExit(object sender, EventArgs e) {

  // do stuff when the application is truly exiting, regardless of the reason

}

استخدم الحدث المغلق ل WinForm.

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

/// <summary>
/// This code captures the 'Alt-F4' and the click to the 'X' on the ControlBox
/// and forces it to call MyClose() instead of Application.Exit() as it would have.
/// This fixes issues where the threads will stay alive after the application exits.
/// </summary>
public const int SC_CLOSE = 0xF060;
public const int WM_SYSCOMMAND = 0x0112;
protected override void WndProc(ref System.Windows.Forms.Message m)
{
    if (m.Msg == WM_SYSCOMMAND && (int)m.WParam == SC_CLOSE)
        MyClose();

    base.WndProc(ref m);
}

انقر نقرا مزدوجا فوق زر الخروج في Form'Design، فما عليك سوى استدعاء طريقة التخلص ()

طريقة عمل الشكل //

 protected override void OnFormClosing(FormClosingEventArgs e)

          {
          base.OnFormClosing(e);

          if (e.CloseReason == CloseReason.WindowsShutDown) return;

               switch (MessageBox.Show(this, "Are you sure you want to exit?", "Exit", MessageBoxButtons.YesNo))
                     {
                       case DialogResult.No:
                           e.Cancel = true;
                           break;
                     default:
                          break;
                     }
         }
 You can use form closing events choose or set closing event in  properties window      
 You can add dialog conditions based on what task you want to perform before closing form

private void Form1_FormClosing(object sender,FormClosingEventArgs e)
{
Application.Exit();
//you can also use Application.ExitThread();
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top