DOBON.NET DOBON.NETプログラミング掲示板過去ログ

treeviewの開閉マークの変更

環境/言語:[Windows7]
分類:[.NET]

VB.NET(2010EXP版)にて treeview を使用して開発しています。
ツリーを開閉するところのマーク形状を+-から▽状に変更する方法をご存じないでしょか?
■No31429に返信(junさんの記事)
OwnerDrawするのが良いと思います。
■No31430に返信(shuさんの記事)
> ■No31429に返信(junさんの記事)
> OwnerDrawするのが良いと思います。

早速のレスありがとうございます。
OwnerDrawでググってみましたが、とりあえずカスタマイズ可能と言うことですね。
treeviewのDrawModeプロパティをOwnerDrawAllにすれば良いような気がしますが、
全てを描画し直す必要があるんですね。
さて、どこから手を付けていけばいいのか ・・・
先は長そうですが一つずつ学習していきます。
■No31433に返信(junさんの記事)
> OwnerDrawでググってみましたが、とりあえずカスタマイズ可能と言うことですね。
> treeviewのDrawModeプロパティをOwnerDrawAllにすれば良いような気がしますが、
> 全てを描画し直す必要があるんですね。

C#ですし、そのままでは使えない(他のクラスとか必要っぽい)ですが…
http://stackoverflow.com/questions/1003459/c-treeview-owner-drawing-with-ownerdrawtext-and-the-weird-black-highlighting-w
とか参考になるかと。

e.Node.FirstNodeがnullなら、子ノードは無い(展開マークのアイコンも無い)ので、
e.DrawDefaultで描画をフレームワークに任せるコトができるかと。
ノード間の破線を描くのが手間…でしょうかね。
e.Node.ForeColorやe.Node.BackColorがemptyってコトもあるようなので、
そのときは親となるTreeViewから引っ張ってくる必要があるでしょう。
# 3項演算子で…
# Color BackColor = e.Node.BackColor.IsEmpty ? ((TreeView)sender).BackColor : e.Node.BackColor;
# こんな感じ。
e.Node.NodeFontがnullなんてのもありました。
■No31437に返信(瀬戸っぷさんの記事)
> ■No31433に返信(junさんの記事)

レスありがとうございます。
しかし、英語苦手です^^;
なので内容は見てませんが ・・・

> e.DrawDefaultで描画をフレームワークに任せるコトができるかと。

その設定下で開閉マークのみ取り替えられないかと試みましたがデフォルトの描画が最上位に有り書き直した描画が見えなくなってしました。
ICONを表示させてもデフォルトの下に行ってしまいますし・・・
難しいです。

引き続き勉強してみます。

DOBON.NET | プログラミング道 | プログラミング掲示板