2011-09-18 3 views
6

Loadイベントが助けになると思いましたが、次のコードではすぐに「完了」と表示されます。フォームが表示されているときにコードを実行するには?

public Form1() 
{ 
    InitializeComponent(); 
    Load += new EventHandler(Form1_Load); 
} 

void Form1_Load(object sender, EventArgs e) 
{ 
    System.Threading.Thread.Sleep(3000); 
    Text = "Done"; 
} 

フォームが表示されたらどのようにスリープさせるのですか?

ありがとうございました。

+3

あなたは何を達成しようとしていますか? – BrokenGlass

答えて

21

Windowsフォームの表示イベントがあります。チェックアウト:あなたは怠惰であればhttp://msdn.microsoft.com/en-us/library/system.windows.forms.form.shown.aspx

かを、ここに行く:

public Form1() 
{ 
    InitializeComponent(); 
    Shown += Form1_Shown; 
} 

private void Form1_Shown(object sender, EventArgs e) 
{ 
    System.Threading.Thread.Sleep(3000); 
    Text = "Done"; 
} 

をお楽しみください。

0

Form1_LoadメソッドでTimerを開始し、そのElapsedイベントをメッセージを表示するメソッドにリンクすることができます。

3

私はをブロックしないことをお勧めします。フォームを処理して、何かを処理した後、そのタイトルに "Done"と表示して、あなたがしたいことを引き起こします。これは、ユーザにのUIフィーリングをブロックしました。これは良くありません。

一時的な「Wait for ...」フォームを表示し、実行する操作/計算が完了したら、メインフォームを表示することをお勧めします。

さらに多くのUXフォーカス設計。

+1

@downvoter:情熱のために説明するか、downvotingするか? – Tigran

0

Thread.Sleep(3000); Loadイベントハンドラでフォームの開始を3秒間遅延させます。これはあなたが期待どおりに動作しない理由です。タイマーが最適なソリューションです。

関連する問題