我有一个WinForms应用程序的窗体。当我按下一个按钮时,它将加载一个模式消息框,其中的选项是yes和no。关闭对话框和启动对话框的窗体
这很好,但是当我按下no时,我想关闭对话框和启动对话框(发送者)的按钮所在的窗体。
因此,应用程序的结构是这样的:
主应用程序窗口>按菜单项来推出新的形式(连接设置)>按下按钮这张表格上推出的消息框。
两个窗口打开(连接设置窗体和对话框),我都希望关闭。
我该怎么做?
我有一个WinForms应用程序的窗体。当我按下一个按钮时,它将加载一个模式消息框,其中的选项是yes和no。关闭对话框和启动对话框的窗体
这很好,但是当我按下no时,我想关闭对话框和启动对话框(发送者)的按钮所在的窗体。
因此,应用程序的结构是这样的:
主应用程序窗口>按菜单项来推出新的形式(连接设置)>按下按钮这张表格上推出的消息框。
两个窗口打开(连接设置窗体和对话框),我都希望关闭。
我该怎么做?
在你的是否模态形式,只需设置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
}
如已经在其他的答案
建议我不不知道C#是否具有相同的行为,但在Java中,我修改了消息框的构造函数,并将引用传递给发件人表单。
MBox1 = New MBox(ParentForm sender);
然后在消息框中,你可以这样做:
sender.close(); //or whatever
this.close();
的例子是更多的 “伪类”,但我希望它能帮助
事情是这样的:
DialogResult result = MessageBox.Show("dialog", "modal", MessageBoxButtons.YesNo);
if (result == DialogResult.No)
{
this.Close();
}
对于自定义模态对话框代码将类似。
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();
}
}