开发者

Start new form on closing one. C#

开发者 https://www.devze.com 2022-12-10 10:44 出处:网络
When my program runs it closes form1 after a few seconds. Depending on what happened during form1\'s lifespan I may want to open f开发者_如何学JAVAorm2. Normally I would just make a new instance of fo

When my program runs it closes form1 after a few seconds. Depending on what happened during form1's lifespan I may want to open f开发者_如何学JAVAorm2. Normally I would just make a new instance of form2 and use the show() method. But form2 is then a child of form1 and then also closes. Does any body have an idea on how to get this to work? thanks.


For multi-form applications I tend to have one form that is the "main" form, which opens up the sub forms.

The main form is the one that gets started with Application.Run(...)

In your case you might want to have a blank form that can be the controller, and have Application.Run call that.

That form can then start instantiate your Form1 and run it. e.g.


public ControlForm : public Form
{
  Form1 form1;
  Form2 form2;

  public ControlForm()
  { 
    form1 = new Form1();
    form2 = new Form2();
  } 

  public void Start() // or something similar
  {
    form1.ShowDialog(); // will block showing the form, or you can do other tricks
                        // to show the form here
    if(form1.someFlag) form2.ShowDialog();
  }
} 

This is just "psudo-C#" code, but hopefully the concept makes sense Then your main function can just run "ControlForm"

Its just a concept you might want to try


You can open a new form in your application's bootstrapper (main method). You will want to call Application.Run(yourFormHere). You would have two of these in a row in the order you want to show the forms. You could store the results of the first form in some static location and check that before showing the second form.


I ended up doing this:

 Auth f = new Form1();
 Application.Run(f);
 if (f.authed)
 {
    Application.Run(new Form2());
 }


I don't think that your problem is that the Form2 instance is a child form of the Form1 instance, but rather that the Form1 instance is your applications main form. That will make your application quit whenever Form1 closed. One way to prevent this is to alter the main method to not set Form1 as the main form (see here for details on that).

0

精彩评论

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