开发者

Closing the desired form from a messagebox! (c#)

Here's how my forms are - Form1 is the first form. From Form1 I move to Form2 by using showdialog method (Form1 is in the background and Form2 on top). Now on clicking a button on Form2, a messagebox is shown (mind you, Form1 is still in the background). Messagebox has just the OK button. Now, when I press OK I want to load Form3 and want to close both Form2 and Form1. How can I close Form2 and Form1?? I used this code in 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();
         }
    }

This method doesn't close Form2 and Form1 but Form3 is showed. So I tried this in Form2:

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

Still both the forms aren't closed. I tried calling a public close method (this.Close in Form1 and Form2) created in Form1 and Form2 from Form2 under the MessageBox.Show. Still nothing worked. How to get rid of both forms with message box's OK button??

Thanks. Simpl开发者_开发知识库e but tricky.. Kindly leave code snippet. I dont understand technical terms unfortunately :-(


You need to know the instances (forms in this case) that you want to close.

In Form2, you could create a variable (e.g. theOneForm) to store a reference to Form1 in and set it after creating Form1 (or even in the constructor of Form1).

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

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

Then from your button1_Click, call theOneForm.Close() - this should close your 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();
       }
    }
} 

Also, close your form after you executed the other code.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜