|
.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」 |
TechTargetジャパン
Insider.NET フォーラム 新着記事
- 新人プログラマーのための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スタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
@IT 新着記事
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -
お勧め求人情報
転職/派遣情報を探す
**先週の人気講座ランキング**
〜 Android編 〜
ホワイトペーパー(TechTargetジャパン)
ソリューションFLASH



