4

Application.Restart() を使用したかのようにすべての内部コードを動作させるにはどうすればよいですか?ただし、実際にプログラムを閉じて再度開く必要はありません。

4

1 に答える 1

6

アプリケーションの設計によっては、メイン フォームの新しいインスタンスを開始し、既存のフォーム インスタンスを閉じるだけの簡単な場合もあります。フォーム変数以外のアプリケーションの状態もリセットする必要があります。あなたが探しているように聞こえるような、アプリケーション用の魔法の「リセット」ボタンはありません。

Program.cs1 つの方法は、「リセット」後にフォームが閉じられた場合にアプリを実行し続けるループを追加することです。

static class Program
{
    public static bool KeepRunning { get; set; }

    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        KeepRunning = true;
        while(KeepRunning)
        {
            KeepRunning = false;
            Application.Run(new Form1());
        }
    }
}

フォーム(またはツールバーなど)でKeepRunning変数をtrue次のように設定します。

private void btnClose_Click(object sender, EventArgs e)
{
    // close the form and let the app die
    this.Close();
}

private void btnReset_Click(object sender, EventArgs e)
{
    // close the form but keep the app running
    Program.KeepRunning = true;
    this.Close();
}
于 2012-11-01T18:58:21.590 に答える