关闭对话框和启动对话框的表单
我在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();
这些例子更像“伪代码”,但我希望它有所帮助