-1
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();

    }

ここで何が間違っているのか理解できません。ユーザーがに表示されるフォームで[OK]をクリックした場合に、条件ステートメントを実行したいと思いますfrmCust.ShowDialog()。現時点では、「dev1」にしかアクセスできません。

4

3 に答える 3

4

おそらく、ダイアログがダイアログの結果を設定していません。[OK]ボタンと[キャンセル]ボタンのDialogResultプロパティが期待どおりに設定されていることを確認してください。

于 2012-01-23T22:39:45.130 に答える
3

閉じる前に、のDialogResultプロパティを正しく割り当ててくださいForm。したがって、callの戻り値のように返されますShowDilaog()

対応するキー押下を処理するために、AcceptButtonCancelButton使用する別のオプションもあります。EnterCancel

于 2012-01-23T22:42:43.490 に答える
1

次の行にブレークポイント(F9)を配置します。

if (dr == DialogResult.OK)

ダイアログが閉じると、何drが設定されているかを調べる機会があります。

ダイアログにDialogResult.OKを返すようにするには、ダイアログの[OK]ボタンで設定します。

void buttonOK_Click(object sender, EventArgs e)
{ 
    this.DialogResult = DialogResult.OK;
    Close();
}

または、Tigranの回答のオプションを実行できます。

于 2012-01-23T22:44:51.220 に答える