سؤال

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 إجابة.

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