2010-08-20 107 views
3

我有一个WinForms应用程序的窗体。当我按下一个按钮时,它将加载一个模式消息框,其中的选项是yes和no。关闭对话框和启动对话框的窗体

这很好,但是当我按下no时,我想关闭对话框和启动对话框(发送者)的按钮所在的窗体。

因此,应用程序的结构是这样的:

主应用程序窗口>按菜单项来推出新的形式(连接设置)>按下按钮这张表格上推出的消息框。

两个窗口打开(连接设置窗体和对话框),我都希望关闭。

我该怎么做?

回答

16

在你的是否模态形式,只需设置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 
} 

如已经在其他的答案

建议
0

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

MBox1 = New MBox(ParentForm sender); 

然后在消息框中,你可以这样做:

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

的例子是更多的 “伪类”,但我希望它能帮助

2

事情是这样的:

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

对于自定义模态对话框代码将类似。

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(); 
     } 

    }