关闭对话框和启动对话框的表单

时间:2010-08-20 09:11:18

标签: c# winforms

我在winforms应用程序中有一个表单。当我按下一个按钮时,它会加载一个带有选项yes和no的模态消息框。

这很好,但是当我按否,我想关闭对话框和启动对话框(发件人)的按钮的表单。

所以app结构是这样的:

主应用程序窗口>按菜单项以启动新表单(连接设置)>按此表单上的按钮以启动消息框。

打开了两个窗口(连接设置表单和对话框),我想要关闭它。

我怎么能这样做?

4 个答案:

答案 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();

这些例子更像“伪代码”,但我希望它有所帮助