0

在下面的代码中,我使用 frmContact.ShowDialog(); 打开一个表单;然后当我通过单击表单中的“确定”按钮关闭表单时,它会关闭,但它会再次打开,因为我在 if 语句中有 frmContact.ShowDialog()。这可以以其他方式完成吗?

        // Button add new customer
    private void btnAdd_Click(object sender, EventArgs e)
    {
        ContactForm frmContact = new ContactForm();

        frmContact.ShowDialog(); // Show the contact form window

        if (frmContact.ShowDialog() == DialogResult.OK)
        {
            MessageBox.Show("OK", "Test", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        }
    }
4

4 回答 4

8

只需删除第一个电话:

ContactForm frmContact = new ContactForm();

if (frmContact.ShowDialog() == DialogResult.OK)
{
    MessageBox.Show("OK", "Test", ...);
}

另一种选择(如果显示表单的代码不在检查返回值的代码旁边,则特别有用)是使用Form.DialogResult

ContactForm frmContact = new ContactForm();
frmContact.ShowDialog();

if (frmContact.DialogResult == DialogResult.OK)
{
    MessageBox.Show("OK", "Test", ...);
}
于 2012-05-08T10:46:46.890 回答
6

只需摆脱第一个ShowDialog.

于 2012-05-08T10:46:32.713 回答
2

如果像这样,请留下第二个:

private void btnAdd_Click(object sender, EventArgs e)
{
    ContactForm frmContact = new ContactForm();   

    if (frmContact.ShowDialog() == DialogResult.OK) //just one call
    {
        MessageBox.Show("OK", "Test", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
    }
}
于 2012-05-08T10:47:15.690 回答
0
private void btnAdd_Click(object sender, EventArgs e)
{
    ContactForm frmContact = new ContactForm();

    frmContact.ShowDialog();
}
于 2012-05-08T10:49:59.807 回答