2012-01-12 15 views
0

非常にシンプルなWindowsフォームアプリケーションがあります。 「メイン」フォームは、「送信」ボタンを使って入力するデータの束です。ユーザーがSubmitを押すと、非常に基本的なフォームの2番目のフォームが表示され、「Please wait ...」というラベルが表示されます。ラベルコントロールが適切にレンダリングされない

Form2 f2 = new Form2(); 
f2.Show(); 
System.Threading.Thread.Sleep(3000); 
f2.Hide(); 

のForm2のCTOR:

public Form2() 
{ 
    InitializeComponent(); 
    this.Text = "Form2 that is useless"; 
} 

私は何を見ることはForm2のですが、ラベルがあるべきところ、私は私がこれを行う第二のフォームを作成し、[送信]ボタンのクリックで()テキストのない白い反応領域としてその輪郭のみを見ることができます。テキストの前景色と背景色がチェックアウトされています(コントロールの色付き背景の黒色の前景)。

プロパティの変更を加えずに単純なフォームを追加しても、コントロールが正しく表示されない理由を特定しようとしています。 。コントロールとピクチャボックスコントロールと同じ結果を得たコントロールの輪郭が現れ、その内容にはない

ヘルプ

答えて

2

追加:。?

Shown += new EventHandler(Form2_Shown); 

のForm2のCTORし、:。

void Form2_Shown(object sender, EventArgs e) 
{ 
    Update(); 
} 

同クラスです。

編集: これは機能しません。おそらくSleepShownイベントハンドラの前に実行されている可能性があります。解決策は、追加することです:以前のソリューションの代わりにSleep

f2.Update(); 

今回は試しました。できます。

+0

私はこのようなフォーム2クラスを作ったが、最終的な結果は同じまま:\t公共部分クラスフォーム2:フォーム \t { \t \tパブリックフォーム2() \t \t { \t \t \tのInitializeComponent() ; \t \t \tこれです。テキスト= "Form2は役に立たない"; \t \t \t表示+ =新しいEventHandler(Form2_Shown); \t \t} \t \t空隙Form2_Shown(オブジェクト送信者、のEventArgs電子) \t \t { \t \t \t this.Update()。 \t \t} – joebalt

+1

@JoeBaltimore _Instead_私の答えは、 '' Sleep'の直前に 'f2.Update();'を追加するだけです。 (私はそれを試してみました。) – ispiro

+0

ありがとう!それはそれをした! – joebalt

2

Form2にはレンダリングする機会が与えられていません。

タイマーを使用してください(2回目のフォームではSleep()メソッドの代わりに)3,000ミリ秒後にタイマーを終了してください。表示されたイベントで起動します。 Tickイベントでフォームを閉じます。

public Form2() { 
    InitializeComponent(); 
    this.Text = "Form2 that is useless"; 
    timer1.Interval = 3000; 
} 

private void Form2_Shown(object sender, EventArgs e) { 
    timer1.Start(); 
} 

private void timer1_Tick(object sender, EventArgs e) { 
    this.Close(); 
} 
+0

私は確か何か間違っていますが、この解決法では望ましい結果が得られませんでした。 – joebalt

+1

@JoeBaltimore私はタイマーをForm2に配置し、ShownイベントとTickイベントを配線し、フォームを表示してから3秒後に閉じました。結果は何でしたか? – LarsTech

関連する問題