0

我试图在主窗体显示后立即打开辅助窗体,但是,辅助窗体首先显示,然后在辅助窗体关闭后显示主窗体(第二个窗体就像启动屏幕一样)。这是一个例子:

private void Form1_Load(object sender, EventArgs e)
    {
        doSomething1(sender, e);
        doSomething2(sender, e);
        // The new form I want to open after the main form.
        Form2 f2 = new Form2();
        doSomething3(sender, e);
    }
    private void doSomething1(object sender, EventArgs e)
    {
        // Do something here...
    }
    private void doSomething2(object sender, EventArgs e)
    {
        // Do something here...
    }
    private void doSomething3(object sender, EventArgs e)
    {
        // Do something here...
    }
4

3 回答 3

1

使用Form1.Shown事件而不是Load事件:

private void Form1_Shown(Object sender, EventArgs e) {
    doSomething1(sender, e);
    doSomething2(sender, e);
    // The new form I want to open after the main form.
    Form2 f2 = new Form2();
    doSomething3(sender, e);
}

或者,取决于是否doSomething1以及doSomething2正在执行用户不需要看到的后台处理:您可以将这两个保留在负载处理程序中,而只需将最后两个语句移动到Shown处理程序中。

于 2013-11-11T00:19:53.150 回答
1

在您的构造函数中首先初始化Shown事件处理程序:

public Form1()
    {
        InitializeComponent();

        this.Shown += new EventHandler(Form1_Shown);
    }

然后把代码放在那里:

void Form1_Shown(object sender, EventArgs e)
    {
      doSomething1(sender, e);
      doSomething2(sender, e);
      // The new form I want to open after the main form.
      Form2 f2 = new Form2();
      doSomething3(sender, e);
   }
于 2013-11-11T00:22:12.800 回答
0
public Form1()
{
    InitializeComponent();

    Form2 f2 = new Form2();
    f2.Show();
于 2013-11-11T00:27:08.523 回答