BeforeCheckNode イベントで Node の ForeColor に応じて CanCheck を true または false に設定する必要があります。BeforeCheckNode イベントで e.Node の ForeColor を取得するにはどうすればよいですか?
private void _tree_BeforeCheckNode(object sender, DevExpress.XtraTreeList.CheckNodeEventArgs e)
{
int index = _tree.GetNodeIndex(e.Node);
RowInfo ri = _tree.ViewInfo.RowsInfo.Rows[index] as RowInfo;
CellInfo cell = (CellInfo)ri.Cells[0];
if (cell.PaintAppearance.ForeColor == Color.LightGray)
e.CanCheck = false;
}
ただし、ここではインデックスは親に相対的です。そのため、子ノードを持つ複数の親がある場合、RowInfo は間違っています。また、可視インデックスを使用すると、範囲外になるため、RowInfo では機能しません。