winformsアプリケーションでは、開いているフォームのコレクション、上にあるもの、開いたものの順番などに簡単にアクセスできますか?WinFormsにアプリケーションのウィンドウ情報を含む何らかの静的クラスがありますか?
静的なクラスにしたいので、オブジェクトを渡すことなくどこでも呼び出すことができます。
それ以外の場合は、自分の「ウィンドウマネージャー」を作って話す必要があります。
winformsアプリケーションでは、開いているフォームのコレクション、上にあるもの、開いたものの順番などに簡単にアクセスできますか?WinFormsにアプリケーションのウィンドウ情報を含む何らかの静的クラスがありますか?
静的なクラスにしたいので、オブジェクトを渡すことなくどこでも呼び出すことができます。
それ以外の場合は、自分の「ウィンドウマネージャー」を作って話す必要があります。
あなたはApplication.OpenForms
propertyを使用して、アプリケーションで現在開いているフォームの全てを含むコレクションを取得することができます。これは確かに静的なプロパティなので、どこでも利用できます。
ただし、フォームが開かれた順序を示すための要件を満たしているかどうかはわかりません。あなたはこの情報をあなた自身で追跡しなければならないでしょう。
OpenForms
によって返されたコレクションは、各フォームを開いたスレッドも追跡しないことに注意してください。フォームのメンバーにアクセスする場合は、最初にInvokeRequired
propertyを確認して、InvalidOperationException
の例外を受けないようにする必要があります。
私は自分で作った。リンクされたリストを使用して注文を追跡します。私は、項目をform.activateイベントでリンクされたリストの先頭に移動し、formcloseイベントで削除します。うまくいく。私は、新しいフォームを生成したフォームに関連してカスケードされた新しいフォームを生成するために命令を使用することができました。 –
それは受け入れられるほど十分です。ありがとう。 –