从消息框中关闭所需的表单! (C#)

时间:2011-03-29 13:04:04

标签: c# c#-2.0 messagebox

以下是我的表单 - Form1是第一种表单。从Form1我使用showdialog方法移动到Form2(Form1在后台,Form2在顶部)。现在单击Form2上的按钮,会显示messagebox(请注意,Form1仍在后台)。 Messagebox只有OK按钮。现在,当我按OK时,我想加载Form3并想要关闭Form2和Form1。如何关闭Form2和Form1?我在Form2中使用了这段代码:

    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下的Form2中调用Form1和Form2中创建的公共关闭方法(Form1和Form2中的MessageBox.Show)。仍然没有效果。如何摆脱消息框的OK按钮?

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

1 个答案:

答案 0 :(得分:1)

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

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

// in Form2
public Form1 theOneForm {get; set;}

// in Form1
Form2 frm = new Form2();
frm.theOneForm = &this; // correct me if I'm wrong here...

然后从button1_Click致电theOneForm.Close() - 这应关闭您的Form1。

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

此外,在执行其他代码后关闭表单