0

重複の可能性:
複数のフォームを扱う C#

C# には 2 つのフォームがあります。1 つのフォームを閉じて、別のフォームを表示したい。コードは次のとおりです。

AMBR A = new AMBR();
this.Close();
A.Show();  

現在のフォームは私のメイン フォームです。2 番目のフォームが表示されますが、両方を閉じるとプログラムが停止します。フォームを非表示にする別の標準的な方法は知っていますが、私のメイン フォームにはロゴと読み込みバーしかありません。ユーザーとの対話は必要ありません。非表示にすると、2 番目のフォームが閉じられた後、プログラムは (タスク マネージャーに表示されるように) 開いたままになり、リソースを占有し続けます。メイン フォームを閉じて、2 番目のフォームを開いたままにします。

4

6 に答える 6

3

「Program.cs」を開きます。次のようにコードを変更します。ここで、SplashFrmは、Application.Run呼び出しで作成されている現在のフォームです。

static class Program
{
    private static EventHandler idleTemp;
    private static SplashFrm splash;


    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        splash = new SplashFrm();
        splash.Show();
        idleTemp = new EventHandler(Application_Idle);
        Application.Idle += idleTemp;

        Application.Run(new AMBR());
    }

    static void Application_Idle(object sender, EventArgs e)
    {
        splash.Close();
        Application.Idle -= idleTemp;
        idleTemp = null;
        splash = null;
    }
}

次に、AMBRが正常に読み込まれた後、電話をかけるApplication.RaiseIdle(null);とスプラッシュが閉じられ、クリーンアップされます。

于 2012-07-17T18:03:24.413 に答える
2

いいえ、メイン フォームを閉じて、2 番目のフォームを開いたままにすることはできません。しかし、あなたはそれを隠すことができます。

this.Hide();

編集:

もう 1 つの解決策は、2 番目のフォームをメイン フォームとして使用し、2 番目のフォーム (スプラッシュ フォーム) が開いている間は非表示にすることです。

そう:

this.Visible = false;

//Show the second form
于 2012-07-17T17:56:11.200 に答える
2

Application.RunApplicationContext MSDN ページには、メイン フォームが閉じられたときだけでなく、最後のフォームが閉じられたときにのみプログラムを終了するように継承する方法を説明する例があります。

于 2012-07-17T18:10:34.057 に答える
1

this.Hide()試しましたか?代わりにthis.Close();

于 2012-07-17T17:56:15.307 に答える
0

メインフォームが間違っているようです。開いている他のフォームをメインフォームに変更し、現在メインフォームであるフォームを他のフォームで開く必要があります。現在のメインフォームを閉じShowたら、新しいメインフォームにします。プログラムの開始時に新しいメインフォームを非表示にします。

于 2012-07-17T17:57:42.310 に答える
0

メイン メソッドが最初のフォームを作成し、それが閉じるのを待っているために、問題が発生する可能性があります。メインを閉じると、アプリケーションがシャットダウンする終了に達します。

メインメソッドに2番目のフォームを作成させるか、最初のフォームを閉じずに非表示にしてタスクバーアイコンを非表示にします。

于 2012-07-17T17:57:02.863 に答える