关闭对话框和启动对话框的表单

我在winforms应用程序中有一个表单。 当我按下一个按钮时,它会加载一个模态消息框,其中包含yes和no选项。

这很好,但是当我按否,我想关闭对话框和启动对话框(发件人)的按钮的表单。

所以app结构是这样的:

主应用程序窗口>按菜单项以启动新表单(连接设置)>按此表单上的按钮以启动消息框。

打开了两个窗口(连接设置表单和对话框),我想要关闭它们。

我怎么能这样做?

在你的yes-no模态forms中,只需按下No按钮就可以将DialogResult设置为No ,如:

 private void noButton_Click(object sender, EventArgs e) { this.DialogResult = System.Windows.Forms.DialogResult.No; } 

单击时,模态窗体将自动关闭

然后当你打开模态表单时,执行以下操作(在连接设置表单中):

 var modalForm = new YesNoForm(); if (modalForm.ShowDialog() == DialogResult.No) { this.Close(); // close the connection setup form } 

编辑

我认为你的是 – 否模态forms是自定义的,如果它是一个简单的MessageBox,只需:

 var dlgResult = MessageBox.Show("Yes or no ?","?",MessageBoxButtons.YesNo); if(dlgResult == System.Windows.Forms.DialogResult.No) { this.Close(); // close the connection setup form } 

正如其他答案中所建议的那样

像这样的东西:

 DialogResult result = MessageBox.Show("dialog", "modal", MessageBoxButtons.YesNo); if (result == DialogResult.No) { this.Close(); } 

对于自定义modal dialog,代码将类似。

  private void newToolStripMenuItem_Click(object sender, EventArgs e) { if (richTextBox1.Text != "") { if (DialogResult.Yes == MessageBox.Show(("Do you want to save changes to Untiteled"), "Notepad", MessageBoxButtons.YesNoCancel)) { saveFileDialog1.ShowDialog(); FileStream fs = new FileStream(saveFileDialog1.FileName + ".txt", FileMode.Append); StreamWriter sw = new StreamWriter(fs); sw.WriteLine(richTextBox1.Text); sw.Close(); fs.Close(); } else if (DialogResult.No == MessageBox.Show(("Do you want to save changes to Untiteled"), "Notepad", MessageBoxButtons.YesNoCancel)) { richTextBox1.Clear(); } else if (DialogResult.Cancel == MessageBox.Show(("Do you want to save changes to Untiteled"), "Notepad", MessageBoxButtons.YesNoCancel)) { ***//when i click on cancel button...the dialogbox should be close??????????????????????*** } } else { richTextBox1.Clear(); } } 

我不知道C#是否具有相同的行为,但在Java中我修改了消息框的构造函数,并将引用传递给sender表单。

 MBox1 = New MBox(ParentForm sender); 

然后在消息框中,您可以执行以下操作:

 sender.close(); //or whatever this.close(); 

这些例子更像“伪代码”,但我希望它有所帮助