作成日: 2022/05/20 最終更新日: 2022/05/20
文書種別
使用方法
詳細
C1TreeViewには、ノード行の全体のスタイルを設定するためにApplyNodeStylesイベントが用意されています。
バウンドモードでは、イベント引数のe.Node.GetValueを用いてノードのデータソースとなっているDataRowを取得できます。DataRowのフィールド値が指定ノードのデータ値に一致する場合にe.NodeStyles.Default.ForeColor/BackColorプロパティを設定することで、行全体の前景色/背景色を変更できます。
以下に、各ルートノードを異なる色に設定するサンプルコードを記載します。

◎サンプルコード(VB)
バウンドモードでは、イベント引数のe.Node.GetValueを用いてノードのデータソースとなっているDataRowを取得できます。DataRowのフィールド値が指定ノードのデータ値に一致する場合にe.NodeStyles.Default.ForeColor/BackColorプロパティを設定することで、行全体の前景色/背景色を変更できます。
以下に、各ルートノードを異なる色に設定するサンプルコードを記載します。

◎サンプルコード(VB)
Imports C1.Win.TreeView
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
C1TreeView1.Columns.Clear()
C1TreeView1.BindingInfo.DataSource = Nothing
' ツリーの設定
C1TreeView1.BindingInfo.DataMember = "Employees"
Dim column As C1TreeColumn = New C1TreeColumn()
column.DisplayFieldName = "Post"
column.HeaderText = "Post"
C1TreeView1.Columns.Add(column)
column = New C1TreeColumn()
column.DisplayFieldName = "FirstName"
column.HeaderText = "First name"
C1TreeView1.Columns.Add(column)
column = New C1TreeColumn()
column.DisplayFieldName = "LastName"
column.HeaderText = "Last name"
C1TreeView1.Columns.Add(column)
' DataSourceの設定
C1TreeView1.BindingInfo.KeyField = "ID"
C1TreeView1.BindingInfo.ParentKeyField = "ChiefID"
C1TreeView1.BindingInfo.DataSource = EmployeesSelfRefDataSet.GetData()
End Sub
Private Sub C1TreeView1_ApplyNodeStyles(sender As Object, e As C1TreeViewNodeStylesEventArgs) Handles C1TreeView1.ApplyNodeStyles
' e.Node.GetValueはノードのデータソースを戻します(バウンドモードの場合)
Dim dataRow = TryCast(e.Node.GetValue(), DataRow)
' 指定したノードの行全体のスタイルを変更
If dataRow.Field(Of Integer)("Id") = 1 Then
e.NodeStyles.[Default].ForeColor = Color.Yellow
e.NodeStyles.[Default].BackColor = Color.DarkGreen
ElseIf dataRow.Field(Of Integer)("Id") = 2 Then
e.NodeStyles.[Default].ForeColor = Color.White
e.NodeStyles.[Default].BackColor = Color.DarkBlue
End If
End Sub
End Class
' データセットの作成
Public Class EmployeesSelfRefDataSet
Public Shared Function GetData() As DataSet
Dim dataSet = New DataSet()
Dim employees = New DataTable("Employees")
employees.Columns.Add("ID", Type.[GetType]("System.Int32"))
employees.Columns.Add("ChiefID", Type.[GetType]("System.Int32"))
employees.Columns.Add("FirstName", Type.[GetType]("System.String"))
employees.Columns.Add("LastName", Type.[GetType]("System.String"))
employees.Columns.Add("Post", Type.[GetType]("System.String"))
employees.Rows.Add(New Object(4) {1, -1, "John", "Doe", "Director of sales"})
employees.Rows.Add(New Object(4) {10, 1, "Alex", "Red", "Manager"})
employees.Rows.Add(New Object(4) {11, 1, "Elena", "White", "Manager"})
employees.Rows.Add(New Object(4) {12, 1, "Eric", "Green", "Manager"})
employees.Rows.Add(New Object(4) {13, 1, "Sara", "Blue", "Manager"})
employees.Rows.Add(New Object(4) {2, -1, "Mary", "Sue", "Marketing director"})
employees.Rows.Add(New Object(4) {20, 2, "Natalie", "Ming", "Manager"})
employees.Rows.Add(New Object(4) {21, 2, "Joseph", "Anderson", "Manager"})
employees.Rows.Add(New Object(4) {22, 2, "Olivia", "Helt", "Manager"})
employees.Rows.Add(New Object(4) {23, 2, "Samantha", "Silver", "Manager"})
dataSet.Tables.Add(employees)
Return dataSet
End Function
End Class
◎サンプルコード(C#)
using C1.Win.TreeView;
namespace TreeView_ConfigureEditing
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
c1TreeView1.Columns.Clear();
c1TreeView1.BindingInfo.DataSource = null;
// ツリーの設定
c1TreeView1.BindingInfo.DataMember = "Employees";
var column = new C1TreeColumn();
column.DisplayFieldName = "Post";
column.HeaderText = "Post";
c1TreeView1.Columns.Add(column);
column = new C1TreeColumn();
column.DisplayFieldName = "FirstName";
column.HeaderText = "First name";
c1TreeView1.Columns.Add(column);
column = new C1TreeColumn();
column.DisplayFieldName = "LastName";
column.HeaderText = "Last name";
c1TreeView1.Columns.Add(column);
// DataSourceの設定
c1TreeView1.BindingInfo.KeyField = "ID";
c1TreeView1.BindingInfo.ParentKeyField = "ChiefID";
c1TreeView1.BindingInfo.DataSource = EmployeesSelfRefDataSet.GetData();
}
// ノード全体のスタイルをカスタマイズ
private void c1TreeView1_ApplyNodeStyles(object sender, C1TreeViewNodeStylesEventArgs e)
{
// e.Node.GetValueはノードのデータソースを戻します(バウンドモードの場合)
var dataRow = e.Node.GetValue() as DataRow;
// 指定したノードの行全体のスタイルを変更
if (dataRow.Field("Id") == 1) //1行目の親ノード
{
e.NodeStyles.Default.ForeColor = Color.Yellow;
e.NodeStyles.Default.BackColor = Color.DarkGreen;
}
else if (dataRow.Field("Id") == 2) //2行目の親ノード
{
e.NodeStyles.Default.ForeColor = Color.White;
e.NodeStyles.Default.BackColor = Color.DarkBlue;
}
}
}
}
// データセットの作成
namespace TreeView_ConfigureEditing
{
public class EmployeesSelfRefDataSet
{
public static DataSet GetData()
{
var dataSet = new DataSet();
var employees = new DataTable("Employees");
employees.Columns.Add("ID", Type.GetType("System.Int32"));
employees.Columns.Add("ChiefID", Type.GetType("System.Int32"));
employees.Columns.Add("FirstName", Type.GetType("System.String"));
employees.Columns.Add("LastName", Type.GetType("System.String"));
employees.Columns.Add("Post", Type.GetType("System.String"));
employees.Rows.Add(new object[5] { 1, -1, "John", "Doe", "Director of sales" });
employees.Rows.Add(new object[5] { 10, 1, "Alex", "Red", "Manager" });
employees.Rows.Add(new object[5] { 11, 1, "Elena", "White", "Manager" });
employees.Rows.Add(new object[5] { 12, 1, "Eric", "Green", "Manager" });
employees.Rows.Add(new object[5] { 13, 1, "Sara", "Blue", "Manager" });
employees.Rows.Add(new object[5] { 2, -1, "Mary", "Sue", "Marketing director" });
employees.Rows.Add(new object[5] { 20, 2, "Natalie", "Ming", "Manager" });
employees.Rows.Add(new object[5] { 21, 2, "Joseph", "Anderson", "Manager" });
employees.Rows.Add(new object[5] { 22, 2, "Olivia", "Helt", "Manager" });
employees.Rows.Add(new object[5] { 23, 2, "Samantha", "Silver", "Manager" });
dataSet.Tables.Add(employees);
return dataSet;
}
}
}