3

C#Windowsフォームアプリケーションにステータスウィンドウを表示して、アプリケーションがロックの取得を待機していることをユーザーに通知したいと思います。これはアプリケーションで定義されたものですが、ユーザーが別のウィンドウ(たとえば、背後にある大きなメインウィンドウなど)をクリックした場合でも、ウィンドウは表示され、アプリケーションの他のすべてのウィンドウの上に常に表示される必要があります。

アプリはバックグラウンドで試行を続け、最終的にロックが取得される可能性がある場合はウィンドウを自動的に閉じる必要があるため、モーダルであってはなりません(したがって、ShowDialog()は使用できません)。実際には、ウィンドウ全体で最上位にすべきではありません。ステーション(つまり、そのターミナルセッションで実行されているすべてのアプリケーション)。

Form.TopMostプロパティを知っていますが、他のアプリケーションからのものであっても、他のすべてのウィンドウの上に1つのウィンドウしか表示および保持できません。これは明らかに私が探しているものではありません。

私はこれが可能であることを知っています、私は他のアプリケーションでそれを以前に何度も見ました。どうすればいいのかわからない。

4

2 に答える 2

9

メインフォームをステータスフォームのメソッドに渡すと、メインフォームShowの上に表示されたままになりますが、他のアプリケーションの上には表示されません。したがって、メインフォームでは、次のようなコードを使用できます。

StatusForm statusForm = new StatusForm();
statusForm.Show(this);

ただし、これは、アプリケーションの1つのウィンドウのみを所有者として示します。

于 2009-09-08T10:46:36.097 に答える
4

Owner子フォームのプロパティを親フォームに設定し、子フォームShowを表示するために使用する必要があります。

于 2009-09-08T10:47:59.260 に答える