1

小さなシンプルなWindowsアプリケーションを作成しています。これが私の主な機能です。

static void Main()
{

    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

    // This will be my Form object  
    Form1 robotPath = new Form1();

    Application.Run(robotPath);

    // at this point I'll try to make changes to my object
    // for instance I'll try to change a background image
    robotPath.changeImage();
}

ただし、オブジェクトを変更した後、変更は出力ウィンドウに反映されません(背景は変更されません)。robotPath.refresh()とrobotPath.invalidate()を試しましたが、背景は変わりません。ただし、ボタンクリックイベントを使用してchangeImage関数を呼び出すと、機能します。しかし、ボタン/マウスイベントを使用せずに変更したいのですが(Form1オブジェクトが変更されると背景が変更されます)何か提案はありますか?

4

1 に答える 1

3
Application.Run()

メインフォームが閉じられるまで戻りません。その後に実行されるすべてのコードApplication.Run()は、プログラムがシャットダウンするまで実行されません。それは明らかにあなたが望むものではありません。

main:を並べ替えることで、問題を簡単に解決できます。

Form1 robotPath = new Form1();
robotPath.changeImage();
Application.Run(robotPath);

別の方法は、への呼び出しをchangeImageのコンストラクターForm1、またはフォームのライフサイクルの早い段階で発生するイベントに移動することLoadです。このオプションは、フォームの動作をより適切にカプセル化します。

于 2012-05-19T11:13:18.943 に答える