مشكلة في Form.DialogResult
-
12-11-2019 - |
سؤال
private void mnuCustomerAdd_Click(object sender, EventArgs e)
{
CustomerForm frmCust = new CustomerForm("Add A New Customer");
int index = lstCustomers.SelectedIndex;
if (index != -1)
frmCust.CustomerData = new Customer(customerMngr.GetCustomer(index).ContactData);
MessageBox.Show("dev1");
DialogResult dr = frmCust.ShowDialog();
if (dr == DialogResult.OK)
{
MessageBox.Show("dev2");
if (frmCust.ReadInput())
{
MessageBox.Show("dev3");
customerMngr.AddCustomer(frmCust.CustomerData);
}
else
MessageBox.Show("Please supply all necessary fields with the correct information");
}
UpdateCustomerList();
}
لا أفهم الخطأ الذي أفعله هنا، أريد تنفيذ العبارات الشرطية إذا قام المستخدم بالضغط على "موافق" في النموذج الذي يظهر في frmCust.ShowDialog()
.في الوقت الحالي لا يمكنني سوى الوصول إلى "dev1".
المحلول
ربما لا يؤدي مربع الحوار الخاص بك إلى تحديد نتيجة الحوار.تأكد من وجود زري "موافق" و"إلغاء الأمر" الخاصين بهما DialogResult
خصائص لتعيين ما تتوقعه.
نصائح أخرى
تأكد من التعيين بشكل صحيح DialogResult ملكية Form
قبل أن يغلق.لذلك سيتم إرجاعها مثل قيمة الإرجاع ShowDilaog()
يتصل.
هناك خيار آخر أيضًا، وهو الاستخدام زر القبول و زرالإلغاء, ، من أجل التعامل مع المقابلة Enter
و Cancel
ضغط المفتاح.
ضع نقطة توقف (F9) على السطر:
if (dr == DialogResult.OK)
عند إغلاق مربع الحوار سيكون لديك فرصة لفحص ما dr
تم ضبطه على.
للحصول على مربع حوار يُرجع DialogResult.OK، يمكنك إما تعيينه في الزر "موافق" في مربع الحوار:
void buttonOK_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
Close();
}
أو يمكنك القيام بالخيار الموجود في Tigran إجابة.