我在winforms应用程序中有一个表单。当我按下一个按钮时,它会加载一个带有选项yes和no的模态消息框。
这很好,但是当我按否,我想关闭对话框和启动对话框(发件人)的按钮的表单。
所以app结构是这样的:
主应用程序窗口>按菜单项以启动新表单(连接设置)>按此表单上的按钮以启动消息框。
打开了两个窗口(连接设置表单和对话框),我想要关闭它。
我怎么能这样做?
答案 0 :(得分:18)
在您的是 - 否模态表单中,按否按钮时,只需将DialogResult
设置为否,例如:
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
}
修改强>
我认为你的是 - 否模态形式是自定义的,如果它是一个简单的MessageBox,只需这样做:
var dlgResult = MessageBox.Show("Yes or no ?","?",MessageBoxButtons.YesNo);
if(dlgResult == System.Windows.Forms.DialogResult.No)
{
this.Close(); // close the connection setup form
}
已在其他答案中提出
答案 1 :(得分:2)
这样的事情:
DialogResult result = MessageBox.Show("dialog", "modal", MessageBoxButtons.YesNo);
if (result == DialogResult.No)
{
this.Close();
}
对于自定义模态对话框,代码将类似。
答案 2 :(得分:2)
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();
}
}
答案 3 :(得分:0)
我不知道C#是否具有相同的行为,但在Java中我修改了消息框的构造函数,并将引用传递给发件人表单。
MBox1 = New MBox(ParentForm sender);
然后在消息框中,您可以执行以下操作:
sender.close(); //or whatever
this.close();
这些例子更像“伪代码”,但我希望它有所帮助