|
.NET TIPS Windowsフォームでフォームのコレクションを使用するには?[2.0のみ、C#、VB]デジタルアドバンテージ 遠藤 孝信2006/07/14 |
![]() |
|
|
|
複数のフォームを開くWindowsアプリケーションでは、各フォームを操作したり、フォーム間でのデータのやりとりを行ったりするために、作成したフォームへの参照を保持しておく必要がある。
そのような目的のためにVisual Basic 6.0では「Formsコレクション」が存在したが、.NET Framework 1.xでは、その管理は自分で行う必要があった(参照:マイクロソフトのサポート技術情報「Visual Basic .NETでForms コレクションを作成する方法」)。
.NET Framework 2.0では、Applicationクラス(System.Windows.Forms名前空間)にOpenFormsプロパティが追加されており、これがフォームのコレクションとなっている。このプロパティを利用することにより、明示的にフォームの管理を行わなくても、アプリケーションで開いているすべてのフォームにいつでもアクセスできる。
■フォームのコレクションであるFormCollectionクラス
ApplicationクラスのOpenFormsプロパティには、フォームのコレクションとして、読み取り専用であるFormCollectionクラス(System.Windows.Forms名前空間)のオブジェクトがセットされる。
フォームのインスタンスを作成し、Showメソッドを呼び出すなどしてフォームを表示すると、そのフォームは自動的にコレクションに追加され、また、Closeメソッドなどによりフォームを閉じれば、フォームはコレクションから自動的に削除される。
また、FormCollectionクラスにはインデクサが実装されており、インデックス番号あるいはフォームの名前(フォームのNameプロパティの値)により、各フォームにアクセスできる。
なお、フォームはインスタンスを作成しただけではコレクションに追加されず、一度は表示する必要がある。また、すでに表示したフォームをHideメソッドなどで非表示にするだけではコレクションからは削除されない。
■OpenFormsプロパティを利用したサンプル・プログラム
以下にOpenFormsプロパティを利用したサンプル・プログラムを示す。
このサンプル・プログラムの実行時の画面は次のようになる。まずメインのフォームで[フォーム作成]ボタンを押すと、番号の付けられた新しいフォームが1つ作成される。リストボックスには現在開かれているフォームの一覧が表示される。リストボックスで項目を選択し、[閉じる]ボタンを押すと、それに対応したフォームが閉じられる。
![]() |
| サンプル・プログラムの実行時の画面 |
| メイン・フォームで[フォーム作成]ボタンを押すと、番号の付けられた新しいフォームを作成する。リストボックスには現在開かれているフォームの一覧が表示する。リストボックスで項目を選択し、[閉じる]ボタンを押すと、それに対応したフォームを閉じる。 |
リストボックスで表示しているフォームの一覧が、フォームのコレクション(OpenFormsプロパティ)の内容だ。
このサンプル・プログラムを作成するには、Visual Studio 2005でWindowsアプリケーションのプロジェクトを新規作成し、まず次の画面のようにフォームに3つのコントロールを配置する。
![]() |
| 3つのコントロールを配置したフォーム |
| 1つのListBoxコントロールと2つのButtonコントロール([フォーム作成]ボタンと[閉じる]ボタン)を配置する。 |
次にForm1.cs(あるいはForm1.vb)に以下のようなコードを書き込む。
| ||
| OpenFormsプロパティを利用したサンプル・プログラム(上:C#、下:VB) | ||
| Form1.cs(あるいはForm1.vb)の内容をこのプログラムに置き換える。C#版では3つのイベント・ハンドラを各コントロールに設定する必要がある。 |
リストボックスにフォーム一覧を表示するのがrefreshListBoxメソッドだ。このメソッドは単純に、OpenFormsプロパティに含まれているフォームの名前をリストボックスに追加しているだけである。すでに述べたように、フォームをインスタンス化してShowメソッドにより表示したり、Closeメソッドを呼び出してフォームを閉じたりするだけで、OpenFormsプロパティの内容が自動的に更新されるのが分かるだろう。
なおVisual Basic 2005では、My機能を使って「My.Application.OpenForms」と記述しても「Application.OpenForms」と意味は同じである。![]()
| 利用可能バージョン:.NET Framework 2.0のみ カテゴリ:Windowsフォーム 処理対象:ウィンドウ 使用ライブラリ:Formクラス(System.Windows.Forms名前空間) 使用ライブラリ:Applicationクラス(System.Windows.Forms名前空間) |
|
||||||||||||||||||||||||||||
| 「.NET TIPS」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -




