.NET TIPS TreeViewコントロールでテキスト部分のクリックを検出するには?[C#、VB]デジタルアドバンテージ 遠藤 孝信2009/06/18 |
|
|
WindowsフォームのTreeViewコントロールでは、CheckBoxesプロパティをTrueに設定することにより、各ノードをチェックボックス付きにし、複数の項目を同時に選択可能にできる(下図)。
チェックボックス付きTreeViewコントロールの実行例 |
実行時には、チェックボックス部分をクリックして、チェックのオン/オフを切り替えられるが、本稿では、ノードのテキスト部分をクリックしても、チェックボックスをオン/オフできるようにする方法を示す。
HitTestメソッドによるクリック位置の判定
TreeViewコントロールには「HitTest」というメソッドが用意されており、コントロール内の指定した位置に何があるのかを知ることができる。
このHitTestメソッドの戻り値はTreeViewHitTestInfoクラス(System.Windows.Forms名前空間)のオブジェクトであり、そのLocationプロパティは、以下の表のいずれかの値となる。
| ||||||||||||||||||||||||
TreeViewHitTestLocations列挙体(System.Windows.Forms名前空間)の値 | ||||||||||||||||||||||||
従って、今回の場合では、マウス・クリックされたときにHitTestメソッドを呼び出し、その戻り値のLocationプロパティが「TreeViewHitTestLocations.Label」である場合に、現在選択されているノードを調べ、チェックのオン/オフを切り替えればよい。このケースでは、TreeViewHitTestInfoオブジェクトのもう1つのプロパティであるNodeプロパティが、いまクリックされたノードを示している。
以上を実装すると、次のようなコードとなる。ここではマウスのボタンが押されたときに発生するMouseDownイベントのイベント・ハンドラとして、上記の処理を行っている。
| ||
ノードのテキスト部分のクリック処理(上:C#、下:VB) |
チェックのオン/オフを切り替えは、現在のチェックの状態を反転することにより行える。
カテゴリ:Windowsフォーム 処理対象:TreeViewコントロール 使用ライブラリ:TreeViewコントロール(System.Windows.Forms名前空間) 使用ライブラリ:TreeViewHitTestInfoクラス(System.Windows.Forms名前空間) 使用ライブラリ:TreeViewHitTestLocations列挙体(System.Windows.Forms名前空間) |
「.NET TIPS」 |
Insider.NET フォーラム 新着記事
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|