在下面的代码中,我用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);
}
}
答案 0 :(得分: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", ...);
}
答案 1 :(得分:6)
摆脱第一个ShowDialog
。
答案 2 :(得分: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);
}
}
答案 3 :(得分:0)
private void btnAdd_Click(object sender, EventArgs e)
{
ContactForm frmContact = new ContactForm();
frmContact.ShowDialog();
}