3

コンテキスト:作成しようとしているアプリケーションは、最初はフォームを表示せず、ファイルを開くダイアログのみを表示します。ファイルを選択した後、アプリケーションはフォームを終了または開くことができます。

Application.Run()を呼び出した後、アプリケーションを閉じるのに問題があります。次の例では、自分自身を強制終了するアプリケーションは作成されません。

static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        var context = new Context();
        Application.Run(context);
        Console.Beep();
    }
}

class Context : ApplicationContext
{
    public Context()
    {
        Application.Exit();
    }
}

ちなみに、フォームを開く前にどのような準備をする必要がありますか?フォームを表示する前に、Application.Runを呼び出す必要がありますか?

本当にありがとう!XO XO

4

2 に答える 2

3
var context = new Context();

このステートメントを使用すると、アプリケーションはApplication.Exit();を実行します。その後、ステートメントApplication.Runが実行されます。これが理由かもしれません

于 2012-04-15T10:27:06.990 に答える
1

終了ロジックを新しいメソッドに移動してみてください。

class Context : ApplicationContext 
{ 
  public void Exit() 
  { 
    Application.Exit(); 
  } 
} 

必要に応じてApplication.Run電話してくださいcontext.Exit()

元のアプローチの問題は、のコンストラクターに終了ロジックを配置したことですContext。つまり、オブジェクトを作成するたびにContext、プログラムを終了する可能性があります(投稿したコードの場合は確実です)。代わりにContext、関連するすべての(コンテキスト)情報をキャプチャし、作成後に明示的なメソッド呼び出しが行われたときに、その情報に基づいて終了することを決定します。

于 2012-04-15T10:43:15.847 に答える