.NET TIPS Windowsフォーム上のコントロールを検索するには?[2.0のみ、C#、VB]デジタルアドバンテージ 遠藤 孝信2006/07/28 |
|
|
Windowsフォーム上に配置されているコントロール群の中から、特定のコントロールをコントロールの名前(コントロールのNameプロパティの値)で検索するには、.NET Framework 1.xではフォームのControlsプロパティからすべてのコントロールを列挙して検索するしか方法はなかった。
これは例えば次のようなコードとなる。
| ||
.NET Framework 1.xにおけるコントロールの検索方法(上:C#、下:VB) |
なおこのコードでは、PanelコントロールやGroupBoxコントロールなどのコンテナ・コントロール内に含まれるコントロールまでは検索できない。これについては「TIPS:Windowsフォーム上のすべてのコントロールを列挙するには?」を参照していただきたい。
フォームのControlsプロパティにセットされるオブジェクトは、コントロールのコレクションであるControl.ControlCollectionクラス(System.Windows.Forms名前空間)のオブジェクトだ*。
* Control.ControlCollectionクラスはControlクラス内で定義されている内部クラス(インナー・クラス)。 |
.NET Framework 2.0では、このControl.ControlCollectionクラスにコントロールを検索するための2つの方法が新しく追加されている。
文字列が指定可能なインデクサ(Itemプロパティ)
その1つ目の方法は、Control.ControlCollectionクラスに新しく追加された、文字列をパラメータに取るインデクサ(VBではItemプロパティとしてアクセスされる)を使う方法である。
Control.ControlCollectionクラスのインデクサには、.NET Framework 1.xではパラメータとしてインデックス番号しか指定できなかったが、.NET Framework 2.0ではコントロール名が指定可能になっている。よって次のようなコードにより簡単にコントロールを検索できる。
| ||
インデクサによるコントロールの検索(上:C#、下:VB) |
もちろんこの場合でも、コンテナ・コントロール内に含まれるコントロールまでは検索できない(次に述べる方法では可能)。
Findメソッド
2つ目の方法は、.NET Framework 2.0で新しくControl.ControlCollectionクラスに追加されたFindメソッドを使う方法だ。
このFindメソッドでは、第1パラメータに検索するコントロールの名前、第2パラメータにはフォーム上のすべてのコントロールから検索するかどうかをブール値(trueかfalse)で指定する。なお、戻り値はコントロールの配列となるので注意が必要だ。
| ||
Findメソッドによるコントロールの検索(上:C#、下:VB) |
Findメソッドでは第2パラメータにtrueを指定すれば、コンテナ・コントロール内に含まれるコントロールも検索される。
利用可能バージョン:.NET Framework 2.0のみ カテゴリ:Windowsフォーム 処理対象:コントロール 使用ライブラリ:Formクラス(System.Windows.Forms名前空間) 使用ライブラリ:Control.ControlCollectionクラス(System.Windows.Forms名前空間) 関連TIPS:Windowsフォーム上のすべてのコントロールを列挙するには? |
「.NET TIPS」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|