フォームコレクションを利用してみる
■アプリケーションの実行中に、現在開いているフォームやその数を取得したくなる時があると思うのですが、 皆さんなら如何に対応するでしょうか?独自にカウントしておく?MDIフォームなら簡単な話しではありますが・・・
Dim intfrm As Integer = Me.OwnedForms.Count For Each objfrm As Form In Me.OwnedForms ' 処理 Next筆者は、上記の様な記述で取得していました。ただ、これには問題もありまして、 メインのフォームからOwnerを指定してあげないとOwnedFormsには含まれないのです。 そして、ケースにもよりますが、Owner指定してしまうと、 そのフォームは自フォームより上に表示されてしまい邪魔になることも・・・ そこで、いつもの如く調べ始めました!ところ、意外にもあっさり解決方法に辿りつきました。
Dim intfrm As Integer = Application.OpenForms.Count For Each objfrm As Form In Application.OpenForms ' 処理 Next上記がApplicationクラスを用いた方法です。 この場合、カウントにもフォームのコレクションにも自ウィンドウが含まれますので、 そこのところだけ注意すれば良いかと思います。 この方法が使える様になったのは.NET Framework 2.0からとのことです。 知らなかった・・・
関連リンク(情報源)
http://www.atmarkit.co.jp/fdotnet/dotnettips/473openforms/openforms.html