2011-07-07 17 views
1

私は、多くのコントロールとフォームを持つMultiThreadedアプリケーションを持っています。 Show Methodを表示するフォームにregeisteredというイベントがあります。最初にイベントが発生するとShowメソッドが実行されますが、フォームは表示されませんが、イベントが再び発生すると(2nd、3rd、....)フォームが表示されます。Windowsフォーム:フォーカスと表示が正しく動作しない

私は簡単な電話frm.Show()を作成しています。


第二の問題私の次のアプリケーションで

は、同じことが起こる府の代わりに、最初にフォーカスdoesntの仕事を示しています。

this.WindowState = FormWindowState.Normal; 
this.Focus(); 
//this.BringToFront(); 
this.TopMost = true; 
+0

FormのShow()を呼び出しても、それは既に悪いとは限りません。このMSDNの記事は、スレッドセーフな呼び出しを行う方法についてお読みください。 Show()を呼び出すとShowDialog()ではなくメインウィンドウの後ろに表示されるので、表示されません。 – Tigran

+0

Showメソッドの呼び出しを示すコードスニペットを投稿してください。どのスレッドでこのメソッドが呼び出されますか? – platon

+0

もっとコードしてください!その種類はちょうどこれらのスニペットで任意の意見を与えるのは難しいああ! – ioWint

答えて

0

は、フォームが作成されたものとは別のスレッドからのショーを()呼び出している:私は、次のプロパティを試してみました ?一般に、Windowsフォームコントロールはスレッドセーフではなく、動作は予測できません。あなたがしなければならない場合、それを行うにはいくつかの方法があります。 How to: Make Thread-Safe Calls To Windows Forms Controls

関連する問題