C# TreeViewのスクロールバーを移動させたときのイベントは?
treeview-scrollbar-event

C# TreeViewのスクロールバーを移動させたとき、これに伴ってTreeViewの右側にあるパネルに描画する内容を変化させるというプログラムを書かなければならなくなりました。さてTreeViewのスクロールバーを移動させたときのイベントというのはあるのでしょうか? プロパティをみたところ、それっぽいものは存在しません。

そこでTreeViewを継承してWndProcメソッドをオーバーライドすることにしました。今回はスクロールバーが動いたことがわかればそれでよいのでイベントハンドラに渡す引数は中身のないEventArgsオブジェクトです。

それからついでにTreeViewの全ノードを取得するメソッドも追加してみました。

フォームにTreeViewExをドラッグアンドドロップしてイベントハンドラを追加します。

なにをしようとしているのかというと右側にあるパネルのうえにTreeNodeのラベルを描画しようとしています。TreeViewExのスクロールバーを移動させたり、アイテムを展開したり縮小させたときもTreeViewExのアイテムが存在するY座標と同じ位置にTreeNodeのラベルが描画されるようにしようとしているのです。

さて、こんなものをつくってどうしようというのでしょうか? 今後使うことになるので作っているのです。