从messagebox关闭所需表单!(c#)

从messagebox关闭所需表单!(c#),c#,c#-2.0,messagebox,C#,C# 2.0,Messagebox,我的表格是这样的-表格1是第一个表格。我使用showdialog方法从Form1移动到Form2(Form1在后台,Form2在顶部)。现在单击Form2上的按钮,会显示一个消息框(请注意,Form1仍在后台)消息框只有“确定”按钮。现在,当我按下OK时,我想加载Form3并同时关闭Form2和Form1。如何关闭Form2和Form1??我在表单2中使用了此代码: private void button1_Click(object sender, EventArgs e) {

我的表格是这样的-表格1是第一个表格。我使用
showdialog
方法从Form1移动到Form2(Form1在后台,Form2在顶部)。现在单击Form2上的按钮,会显示一个
消息框
(请注意,Form1仍在后台)<代码>消息框只有“确定”按钮。现在,当我按下
OK
时,我想加载Form3并同时关闭Form2和Form1。如何关闭Form2和Form1??我在表单2中使用了此代码:

    private void button1_Click(object sender, EventArgs e)
    {
         if (...)
         {
               MessageBox.Show("hello");
               this.DialogResult = DialogResult.OK;
               this.Close();
               Form3 frm = new Form3();
               frm.ShowDialog();
         }
    }
此方法不会关闭Form2和Form1,但会显示Form3。所以我在Form2中尝试了这个:

    private void button1_Click(object sender, EventArgs e)
    {
        if (...)
        {
           if (MessageBox.Show("hello") == DialogResult.OK)
           {
               this.Close();
               Form3 frm = new Form3();
               frm.ShowDialog();
           }
        }
    }  
但这两个表单都没有关闭。我尝试调用一个公共关闭方法(
this.close
在Form1和Form2中),该方法是在
MessageBox.Show
下从Form2在Form1和Form2中创建的。仍然没有任何效果。如何使用消息框的“确定”按钮摆脱这两种形式


谢谢。简单但棘手。。请留下代码片段。不幸的是,我不理解技术术语:-(

您需要知道要关闭的实例(本例中的表单)

在Form2中,您可以创建一个变量(例如,
theOneForm
),将对Form1的引用存储在中,并在创建Form1(甚至在Form1的构造函数中)后进行设置

然后从
按钮1\u单击
,调用
one form.Close()
-这将关闭表单1

private void button1_Click(object sender, EventArgs e)
{
    if (...)
    {
       if (MessageBox.Show("hello") == DialogResult.OK)
       {
           Form3 frm = new Form3();
           frm.ShowDialog();
           theOneForm.Close();
           this.Close();
       }
    }
} 

另外,请在执行其他代码后关闭表单。

看起来您应该只在执行所有其他代码后才关闭表单。请尝试一下,然后在条件块末尾调用
this.close()
private void button1_Click(object sender, EventArgs e)
{
    if (...)
    {
       if (MessageBox.Show("hello") == DialogResult.OK)
       {
           Form3 frm = new Form3();
           frm.ShowDialog();
           theOneForm.Close();
           this.Close();
       }
    }
}