0

C# Windows フォーム アプリケーションをビルドします。メインモジュールに問題があります。(既定では "Program.cs" という名前が付けられます)

コンパイルして実行すると:

MessageForm f = new MessageForm("Main");
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(f);

失敗します (Windows アプリケーションのクラッシュ メッセージ)。ただし、次の場合:

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MessageForm("Main"));

それはうまくいきます。

  • 最後のコマンド (Application.run(..)) に注意してください。この問題が発生します。

「変数なし」で実行しているのに、変数で実行しないのはなぜですか? (すみません、呼び方がよくわかりません)。

なぜそのように?何が問題ですか?

4

2 に答える 2

4

ウィンドウを作成する前に、Application.SetCompatibleTextRenderingDefaultを呼び出す必要があります。InvalidOperationExceptionウィンドウが作成された後に呼び出されるとスローされます。これが、アプリケーションがクラッシュする理由です。

このようにコードを書きたい場合は、呼び出しの後にフォーム変数を移動するだけです。

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
MessageForm f = new MessageForm("Main");
Application.Run(f);
于 2012-12-07T00:32:17.077 に答える
3

最初のフォームが作成された後、ビジュアル スタイルと互換性のあるテキスト レンダリングを有効にしています。次のように呼び出しの順序を変更してみてください。

    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    MessageForm f = new MessageForm("Main");
    Application.Run(f);

つまり、アプリケーションのグローバルな動作に影響を与えるメソッドを呼び出した後にフォームを作成します...

于 2012-12-07T00:32:42.693 に答える