2
Form1 browser = new Form1(textBoxUserName.Text.Trim(), textBoxOldPassword.Text.Trim(), textBoxNewPassword.Text.Trim());
browser.Shown += (o, t) => { this.Close(); }; 
browser.Show(); 

新しいウィンドウを表示し、古いウィンドウを閉じたい。

何が起こっているのかというと、this.Close()が呼び出されているときに、アプリケーションが自動的にシャットダウンされているということです。

WinFormsを使用しています

4

2 に答える 2

2

あなたのコードはあなたのメインフォームParentFormからのものであり、メッセージポンプはによって開始されたと思います

Application.Run(new ParentForm());

閉じたときに終了しParentFormます。あなたがやろうとしていることを達成するために、あなたはむしろ書くことができます:

[STAThread]
static void Main()
{
    Form form = new ParentForm();
    form.Show();

    Application.Run(); // starts the message pump
}

この場合Application.Exit()、プログラムを終了するために明示的に呼び出す必要があります。

public class Form1 : Form
{
    protected override void OnClosed(EventArgs e)
    {
        base.OnClosed();

        Application.Exit();
    }
}

よりクリーンなアプローチでは、を利用しApplicationContextます。

于 2012-09-20T21:22:58.010 に答える
0

これがアプリケーションがロードされる最初のフォームであり、それを閉じると、アプリケーションが閉じます。

this.Close()の代わりに

this.Hide()と書いてください。

于 2012-09-20T20:11:47.777 に答える