ゲームエフェクトデザイナーのブログ | A Real-Time VFX Artist's Blog

About Making Materials on UE, Making Tools with C#, etc

C# TreeViewの主なプロパティ

TreeViewはエクスプローラのナビゲーションウインドウのようにフォルダ階層をツリー表示するようなコントロールです。

ツリーに並ぶアイテムを「ノード」という呼称になります。

 

動作

●FullRowSelect
ノード選択時にTreeViewの幅全体をハイライトします。
ノード名の長さにハイライトの長さが左右されないようTrue推奨です。

●HideSelection
フォーカスが移ったら選択中のノードのハイライトを消します。
今何を選択しているのか分からなくなるのでFalse推奨です。

●Indent
ノードのインデントの設定。ただしデフォルトの19が丁度良いです。

●LabelEdit
ユーザーがノードのラベル名を編集できるようにします。
選択中のノードをさらにクリックすると編集可能状態になります。
ラベル名変更ダイアログなど自作しなくて済むのでTrue推奨です。
F2キーで編集可能にするにはそのように実装する必要があります(後述)。

●ShowLines
ノードの階層をラインで表示します。
シンプルな見た目にしたい場合はFalseで。

 

表示

●BackColor
背景色

●Font
ノードのラベルで表示される文字のスタイル

●BorderStyle
コントロールの枠線のスタイル。

●ForeColor
ノードのラベルの文字色。

 

よく使うコード例


ノードを追加する場合

 // ノードの生成
TreeNode インスタンス名 = new TreeNode(ラベルの文字列);

// 生成したノードの追加
treeView1.Nodes.Add(インスタンス名);

// 追加したノードを選択
treeView1.SelectedNode = インスタンス名;


ノードが選択されているか調べる場合

// ノードを選択しているかどうかを判定
if (treeView1.SelectedNode != null)

// 親ノードが存在するか判定
if (treeView1.SelectedNode.Parent == null)


選択中のノードに子ノードを追加

// 空のノードを生成
TreeNode 子のインスタンス名 = new TreeNode(子のラベルの文字列);

// 選択中の親ノードをインスタンスに代入
TreeNode 親のインスタンス名 = treeView1.SelectedNode;

// 親ノードに子ノードを追加
親のインスタンス名.Nodes.Add(childNode);

// 親のツリーを開く
親のインスタンス名.Expand();


親ノードを選択

// 空のノードを生成
TreeNode インスタンス名 = new TreeNode();

// 選択中のノードの親をインスタンスに代入
インスタンス名 = treeView1.SelectedNode.Parent;

// ラベル名を取得
string s = インスタンス名.Text;


選択中のノードを削除

// 選択中のノードを削除
treeView1.SelectedNode.Remove();


ノードをindexで指定する

// 0 番目のノード
treeView1.Nodes[0];


ルートノードの数をカウントする

// ルートノードの数をカウント
int i = treeView1.Nodes.Count;


選択中のノードと同じ親のノードをカウントする

// 同じ親に属するノードの数をカウント
TreeNode インスタンス名 = treeView1.SelectedNode;
int i = インスタンス名.Nodes.Count;


ノードにオブジェクトを渡す

// 空のノードを生成
var インスタンス名 = new クラス();

// 空のノードを生成
rootNode.Tag = fData;


ラベル名編集関連はこちらの記事が参考になります。

TreeViewのノードのテキストをユーザーが編集できるようにする - .NET Tips (VB.NET,C#...)

ツリーをドラッグ&ドロップで操作したい場合について。

TreeViewのノードをDrag&Dropにより移動、コピーできるようにする - .NET Tips (VB.NET,C#...)

 

※随時更新