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 属性设置为您所期望的。

其他提示

确保正确分配 对话框结果 的财产 Form 在它关闭之前。所以它会像返回值一样被返回 ShowDilaog() 称呼。

还有另一种选择,就是使用 接受按钮取消按钮, ,以便处理相应的 EnterCancel 按键。

在该行上放置一个断点 (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