معالجة زر إلغاء في نعم / لا / إلغاء messageBox في طريقة فوركلودج

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

  •  12-09-2019
  •  | 
  •  

سؤال

أنا وضعت أ نعم / لا / إلغاء messageBox في formclosing. طريقة النموذج الخاص بي. والآن هذا هو نص مربع الرسالة: هل ترغب في حفظ البيانات؟

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

كتبت حتى الآن:؛)

DialogResult dr = MessageBoxFarsi.Show("Do You Want to Save Data?","",MessageBoxButtons.YesNoCancel,MessageBoxIcon.Warning);

//...
else if (dr == DialogResult.Cancel)
{
    ???
}

الرجاء مساعدتي في إكمال الرمز الخاص بي!
شكرا

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

المحلول

يحتوي ForumClosing على معلمة منطقية والتي، في حالة ضبطها عند إرجاع الوظيفة، سيتم إلغاء إغلاق النموذج، IIRC.

تحرير: على سبيل المثال،

private void Form1_FormClosing(Object sender, FormClosingEventArgs e) {
    // Set e.Cancel to Boolean true to cancel closing the form
}

انظر هنا.

نصائح أخرى

في الواقع أعتقد أنك تفتقد معالج الأحداث، أوه لا يمكنك التحول إلى ذلك حتى بدون معالج حتى. يجب عليك إضافة حدث مع معالج الأحداث مثل هذا.

private void myform_Closing(object sender, FormClosingEventArgs e) 
{
    DialogResult dr = MessageBoxFarsi.Show("Do You Want to Save Data?","",MessageBoxButtons.YesNoCancel,MessageBoxIcon.Warning)

    if (dr == DialogResult.Cancel) 
    {
        e.Cancel = true;
        return;
    }
    else if (dr == DialogResult.Yes)
    {
        //TODO: Save
    }
}

//now add a default constructor 
public myform()  // here use your form name.
{
    this.FormClosing += new FormClosingEventHandler(myform_Closing); 
}

سامحني إذا كان هناك بعض الأخطاء تهجئة في هذا الرمز لأنني لم أكتبها في C # ونسخ معجون هنا. أنا فقط كتبته هنا. :)

هل يمكن أن يكون لديك شيء مثل ما يلي:

if(dr == DialogResult.Cancel)
{
    e.Cancel = true;
}
else if(dr == DialogResult.Yes)
{
    //Save the data
}

يجب أن يغلق الرمز أعلاه فقط النموذج إذا اخترت نعم أو لا، وسيقوم بحفظ البيانات عند اختيار نعم.

يجب أن تجرب هذه الوظيفة

public DialogResult msgClose(string msg)
{
     return MessageBox.Show(msg, "Close", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
}

وتستخدم مثل هذا.

private void frm_FormClosing(object sender, FormClosingEventArgs e)
{
     if (conn.msgClose("Application close?") == DialogResult.No)
         e.Cancel = true;
     else
     {
         this.Close();
     }
}

يمكنك تجربة هذا:

if (MessageBox.Show("Are you sure you want to quit?", "Attention!!", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning) == DialogResult.Yes)
{
   //this block will be executed only when Yes is selected
   MessageBox.Show("Data Deleted", "Done", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else
{
  //this block will be executed when No/Cancel is selected
  //the effect of selecting No/Cancel is same in MessageBox (particularly in this event)
}

إذا لزم الأمر نفسه يمكنك القيام به ل No و Cancel زر انقر فوق "استخدام" DialogResult صف دراسي

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top