作成日: 2022/05/20 最終更新日: 2022/05/20
文書種別
使用方法
詳細
C1TreeViewに複数列が存在する場合、ノード内の特定のセルにスタイルを設定するためApplyNodeCellStylesイベントが用意されています。
このイベント引数のe.Node.GetValueでノードの行を、e.ColumnIndexで列を指定することで、ノード内のセルを特定できます。そのセルの前景色、背景色は、e.NodeCellStyles.Default.ForeColor/BackColorプロパティを用いて設定することが可能です。
以下に、第1ノードの2列目のセルに対して、前景色/背景色を設定するサンプルコードを記載します。

◎サンプルコード(VB)
このイベント引数のe.Node.GetValueでノードの行を、e.ColumnIndexで列を指定することで、ノード内のセルを特定できます。そのセルの前景色、背景色は、e.NodeCellStyles.Default.ForeColor/BackColorプロパティを用いて設定することが可能です。
以下に、第1ノードの2列目のセルに対して、前景色/背景色を設定するサンプルコードを記載します。

◎サンプルコード(VB)
Imports C1.Win.TreeView
Public Class Form1
Dim nudColumnsCount As Integer = 3 '列数
Dim nudRootNodesCount As Integer = 2 'ルートのノード数
Dim nudNodesCount As Integer = 4 '子のノード数
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' ツリーの作成
C1TreeView1.Columns.Clear()
C1TreeView1.Nodes.Clear()
Dim i As Integer
For i = 0 To nudColumnsCount - 1
Dim column As C1TreeColumn = New C1TreeColumn()
column.HeaderText = String.Format("Column {0}", i)
column.AutoWidth = False
column.Width = 200
C1TreeView1.Columns.Add(column)
Next
For i = 0 To nudRootNodesCount - 1
Dim node As C1TreeNode = New C1TreeNode(String.Format("Node 0.{0}", i))
C1TreeView1.Nodes.Add(node)
GenerateChildNodes(node)
node.Collapse(True)
Next
End Sub
Private Sub GenerateChildNodes(ByVal parentNode As C1TreeNode)
If Not parentNode.HasChildren Then
For i = 0 To nudNodesCount - 1
Dim node = New C1TreeNode(String.Format("Node {0}.{1}.{2}", parentNode.Level + 1, parentNode.ParentCollection.IndexOf(parentNode), i))
parentNode.Nodes.Add(node)
Next
End If
Private Sub C1TreeView1_ApplyNodeCellStyles(sender As Object, e As C1TreeViewNodeCellStylesEventArgs) Handles C1TreeView1.ApplyNodeCellStyles
' 指定した列のセルにのみスタイルを適用
If (e.Node.GetValue().ToString() = "Node 0.0") And (e.ColumnIndex = 1) = True Then
e.NodeCellStyles.Default.ForeColor = Color.LightYellow
e.NodeCellStyles.Default.BackColor = Color.DarkOrchid
End If
End Sub
End Class
◎サンプルコード(C#)
using C1.Win.TreeView;
namespace prj_C1TreeView
{
public partial class Form1 : Form
{
int nudColumnsCount = 3; //列数
int nudRootNodesCount = 2; //ルートのノード数
int nudNodesCount = 4; //子のノード数
public Form1()
{
InitializeComponent();
GenerateTreeView();
}
// ツリーの作成
private void GenerateTreeView()
{
c1TreeView1.Columns.Clear();
c1TreeView1.Nodes.Clear();
for (var i = 0; i < nudColumnsCount; i++)
{
var column = new C1TreeColumn();
column.HeaderText = string.Format("Column {0}", i);
column.AutoWidth = false;
column.Width = 200;
c1TreeView1.Columns.Add(column);
}
for (var i = 0; i < nudRootNodesCount; i++)
{
var node = new C1TreeNode(string.Format("Node 0.{0}", i));
c1TreeView1.Nodes.Add(node);
GenerateChildNodes(node);
node.Collapse(true);
}
}
private void GenerateChildNodes(C1TreeNode parentNode)
{
if (!parentNode.HasChildren)
{
for (var i = 0; i < nudNodesCount; i++)
{
var node = new C1TreeNode(string.Format("Node {0}.{1}.{2}", parentNode.Level + 1, parentNode.ParentCollection.IndexOf(parentNode), i));
parentNode.Nodes.Add(node);
}
}
}
private void c1TreeView1_ApplyNodeCellStyles(object sender, C1TreeViewNodeCellStylesEventArgs e)
{
// 指定した列のセルにのみスタイルを適用
if (e.Node.GetValue().ToString() == "Node 0.0" && e.ColumnIndex == 1)
{
e.NodeCellStyles.Default.ForeColor = Color.LightYellow;
e.NodeCellStyles.Default.BackColor = Color.DarkOrchid;
}
}
}
}
}