TreeViewノードの標準的なマウス動作(幅広いノード領域での選択、ホットトラッキング、ダブルクリックによる展開など)を拡張するにはどうすればよいですか?私は、システム描画された場合よりも広いラベルを持つカスタム描かれたノードを持っており、カーソルが通常のノード境界内にあるときにマウスのアクションに反応します。カスタムTreeNode境界
すべてのアイデア?
ところで、TVM_GETITEMRECTとTVM_HITTESTをインターセプトすることは、そのトリックを行いません。
私は何をしているのか、いくつかの言葉を書いています。通常、WinForms TreeViewとまったく同じように機能するWinFormsツリーコントロールを開発していますが、カスタムフォントと色をどのパーツにも適用できる特殊ノードそのラベルのだから、例えば、テキストに太字の単語があるノードを持つことができる、「RichTreeView」です。いくつかの重いフォントをつまずかせることで、ノードラベルは規則的なものよりも幅広くなるかもしれませんが、狭くなります(これはマウスの動作を抑える別の問題を引き起こします)。
シャックス、私はそれを行うためのクリーンな方法がないと思った。そのダミーのテキストトリックは検討する価値があります。私はTreeNodeから派生したクラスを持っていて、標準のTreeViewに置いたときに標準のTreeNodeとまったく同じように動作したいので、Tagはプレースホルダとして使用できません。オプション)。より大きな問題は、非仮想テキストを通常どおりに動作させることです.TVM_SETITEMをトラップし、ダミーテキストを植えるのがうまくいくと思います。しかし、それはもっと醜い回避コードです。とにかくおかげさまで、私はこの1つでどのように汚いと思っているのか考える必要があります... –