2016-06-18 3 views
0

私のアプリは、数秒後にフォームを表示するタイマーを使用しています。 私のアプリが他のものを最小限に抑えると、タイマーはまだアクティブです(私はそれで大丈夫です)。そして、フォームはそれに焦点を当てたすべての私のウィンドウを前面に持ってきます(通常の動作)。C# - フォームを前面に持ってこない

メインフォームの上に新しいフォームを開きたいが、すべてのウィンドウを開く必要はない。メインフォームで

、私はこのような新しいフォームを呼び出す:

MRIS.EVENT_BOX form1 = new MRIS.EVENT_BOX(); 
form1.Owner = this; 
form1.ShowDialog(); 

私はEVENT_BOXでこれを追加することにより、フォーカスの問題を取り除くために管理:

protected override bool ShowWithoutActivation { get { return true; } } 

私もそのTopMostのを確認してください新しいフォームではfalseに設定されます。

しかし、新しいフォームは他の何よりもまだ上に表示されています(今度はフォーカスなし)。

私はいくつかの他の質問をチェックしますが、役に立つものを見つけることはできません。

一部の人々は目に見える形について話しますか?

お手伝いできますか?あなたは

form1.Show(); 
//form1.BringToFront() You may need to call this if you want to being it to front 

form1.ShowDialog()前にそれを持ってしたくない場合はform1.Show();を呼び出す必要が

おかげ

+0

と表示されます。ダイアログ( 'ShowDialog')を表示すると、元のフォームの上にフォームが表示されます - 特に、元のフォームが閉じる前に新しいフォームを閉じる必要があります。再度使用してください。 * dialogs *のために使用されることを意図しています。単に別のフォームを表示したいのであれば、@Leopardによって示されるように、 'Show'があなたが望むメソッドです。 – MicroVirus

+0

あなたの質問から、タイマーが刻むときに起こりたいことを完全にはっきりと明らかにしていない..「メインアプリケーション」他の無関係なアプリケーションは開いていて、「すべての私のウィンドウ」はC#アプリケーションの残りのウィンドウですか?タイマーがどのウィンドウを上にしたいのですか? – steve16351

+0

@ Steve16351:「すべての私のウィンドウ」とは、自分のアプリケーションに関係のないすべてのウィンドウを指します。私は自分のアプリケーションを起動し、他のものに切り替えたい、たとえばインターネットをブラウズして、自分のアプリケーションがすべてのウィンドウの上にそれを表示せずにフォームを表示できるようにしたい。その後、インターネットを閲覧し終えると、私は自分のアプリに戻り、私の主なアプリのフォームの上に私のフォームを見ます。 – nicodevil

答えて

1

は、それがparent formの上部に表示されることを意味dialogとしてフォームを示しています。この詳細については、here

+0

こんにちはヒョウ、あなたの答えのおかげで、私のフォームはまだすべての私のウィンドウ(私のアプリケーションに関連していない)の上に表示されますが、今度はフォームはそれに関連するコードを実行せずに表示されます(あなたが提供するリンクで説明) 。それで、 "問題"を解決しました。 – nicodevil

+0

私の最後の文には申し訳ありません "問題を解決しました。"、問題は解決しません。 – nicodevil

関連する問題