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

◎サンプルコード(VB)
バウンドモードでは、イベント引数のe.Node.GetValueを用いてノードのデータソースとなっているDataRowを取得できます。DataRowのフィールド値が指定ノードのデータ値に一致する場合に、e.NodeCellStyles.Default.ForeColo.ForeColor/BackColorプロパティを用いて、指定したセルの前景色、背景色を設定できます。
以下に、第1ノードの2列目のセルに対して、前景色/背景色を設定するサンプルコードを記載します。

◎サンプルコード(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_ApplyNodeCellStyles(sender As Object, e As C1TreeViewNodeCellStylesEventArgs) Handles C1TreeView1.ApplyNodeCellStyles
If e.ColumnIndex = 1 Then
' ノードの中央セルのスタイルを変更
Dim dataRow = TryCast(e.Node.GetValue(), DataRow)
If dataRow.Field(Of String)("FirstName") = "John" Then
e.NodeCellStyles.[Default].ForeColor = Color.LightYellow
e.NodeCellStyles.[Default].BackColor = Color.DarkOrchid
End If
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_ApplyNodeCellStyles(object sender, C1TreeViewNodeCellStylesEventArgs e)
{
if (e.ColumnIndex == 1)
{
// ノードの中央セルのスタイルを変更
var dataRow = e.Node.GetValue() as DataRow;
if (dataRow.Field("FirstName") == "John")
{
e.NodeCellStyles.Default.ForeColor = Color.LightYellow;
e.NodeCellStyles.Default.BackColor = Color.DarkOrchid;
}
}
}
}
}
// データセットの作成
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;
}
}
}