ここでは、TreeViewのノードの文字色を子ノードが無い時に色を変えていますが、条件を変えることによって色々な場面に対応できる可能性があります。
C#
public partial class Form1 : Form { TreeView treeView1; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { //TreeViewを子コントロールとして登録 treeView1 = new TreeView(); this.Controls.Add(this.treeView1); this.treeView1.Dock = DockStyle.Fill; //テスト用の子ノードを登録 this.treeView1.Nodes.Add("動物"); this.treeView1.Nodes[0].Nodes.Add("犬"); this.treeView1.Nodes[0].Nodes[0].Nodes.Add("プードル"); this.treeView1.Nodes[0].Nodes[0].Nodes.Add("トイプードル"); this.treeView1.Nodes[0].Nodes[0].Nodes.Add("柴犬"); this.treeView1.Nodes[0].Nodes.Add("猫"); this.treeView1.Nodes[0].Nodes[1].Nodes.Add("三毛猫"); this.treeView1.Nodes[0].Nodes[1].Nodes.Add("シャム"); this.treeView1.Nodes[0].Nodes.Add("魚"); this.treeView1.Nodes[0].Nodes[2].Nodes.Add("サメ"); this.treeView1.Nodes[0].Nodes[2].Nodes.Add("イルカ"); this.treeView1.Nodes[0].Nodes[2].Nodes.Add("アジ"); this.treeView1.Nodes.Add("鉱物"); this.treeView1.Nodes[1].Nodes.Add("カルシウム"); this.treeView1.Nodes[1].Nodes.Add("鉄"); this.treeView1.Nodes[1].Nodes.Add("銅"); this.treeView1.Nodes.Add("植物"); this.treeView1.Nodes[2].Nodes.Add("桜"); this.treeView1.Nodes[2].Nodes.Add("松"); this.treeView1.Nodes.Add("宇宙人"); //フォントの色を変える処理 SetForeColorOfTreeView(this.treeView1); } private void SetForeColorOfTreeView(TreeView tv) { //子ノードを全てチェックする for (int i = 0; i < tv.Nodes.Count; i++) { //子ノードのフォントの色を変える処理を呼び出す SetForeColorOfTreeNode(tv.Nodes[i]); } } private void SetForeColorOfTreeNode(TreeNode tn) { //ノードがアイテムを持っているかいないかチェック if (tn.Nodes.Count == 0) { //フォントの色を赤に変える tn.ForeColor = Color.Red; return; } //子ノードを全てチェックする for (int i = 0; i < tn.Nodes.Count; i++) { //子ノードを持っているので再帰呼び出しをする SetForeColorOfTreeNode(tn.Nodes[i]); } } }
VB.NET
Public Class Form1 Dim treeView1 As TreeView Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'TreeViewを子コントロールとして登録 treeView1 = New TreeView() Me.Controls.Add(Me.treeView1) Me.treeView1.Dock = DockStyle.Fill 'テスト用の子ノードを登録 Me.treeView1.Nodes.Add("動物") Me.treeView1.Nodes(0).Nodes.Add("犬") Me.treeView1.Nodes(0).Nodes(0).Nodes.Add("プードル") Me.treeView1.Nodes(0).Nodes(0).Nodes.Add("トイプードル") Me.treeView1.Nodes(0).Nodes(0).Nodes.Add("柴犬") Me.treeView1.Nodes(0).Nodes.Add("猫") Me.treeView1.Nodes(0).Nodes(1).Nodes.Add("三毛猫") Me.treeView1.Nodes(0).Nodes(1).Nodes.Add("シャム") Me.treeView1.Nodes(0).Nodes.Add("魚") Me.treeView1.Nodes(0).Nodes(2).Nodes.Add("サメ") Me.treeView1.Nodes(0).Nodes(2).Nodes.Add("イルカ") Me.treeView1.Nodes(0).Nodes(2).Nodes.Add("アジ") Me.treeView1.Nodes.Add("鉱物") Me.treeView1.Nodes(1).Nodes.Add("カルシウム") Me.treeView1.Nodes(1).Nodes.Add("鉄") Me.treeView1.Nodes(1).Nodes.Add("銅") Me.treeView1.Nodes.Add("植物") Me.treeView1.Nodes(2).Nodes.Add("桜") Me.treeView1.Nodes(2).Nodes.Add("松") Me.treeView1.Nodes.Add("宇宙人") 'フォントの色を変える処理 SetForeColorOfTreeView(Me.treeView1) End Sub Private Sub SetForeColorOfTreeView(ByVal tv As TreeView) '子ノードを全てチェックする For i As Integer = 0 To tv.Nodes.Count - 1 Step 1 '子ノードのフォントの色を変える処理を呼び出す SetForeColorOfTreeNode(tv.Nodes(i)) Next End Sub Private Sub SetForeColorOfTreeNode(ByVal tn As TreeNode) 'ノードがアイテムを持っているかいないかチェック If tn.Nodes.Count = 0 Then 'フォントの色を赤に変える tn.ForeColor = Color.Red Return End If '子ノードを全てチェックする For i As Integer = 0 To tn.Nodes.Count - 1 Step 1 '子ノードを持っているので再帰呼び出しをする SetForeColorOfTreeNode(tn.Nodes(i)) Next End Sub End Class