2010-08-20 184 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(); 
     } 

    }