我有一個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();
}
}