BillWoodruff
Чтобы перечислить все TreeNodes в Win Forms TreeView, а также назначить различные BackColor и шрифт в зависимости от их уровня в TreeView:
private List<Color> colorList = new List<Color>
{
// or use Color.AliceBlue
// or Color.FromArgb(red value, green value, blue value)
Color.FromArgb(0xfff1de),
Color.FromArgb(0xdbe7eb),
Color.FromArgb(0xf2f1eb)
};
private List<Font> fontList = new List<Font>
{
new System.Drawing.Font("Arial", 10.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))),
new System.Drawing.Font("Arial", 10.2F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))),
new System.Drawing.Font("Arial", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)))
};
private void Form1_Load(object sender, EventArgs e)
{
// other Load Event business ...
// recursively enumerate the TreeNodes
colorTreeViewNodes(treeView1.Nodes);
}
private void colorTreeViewNodes(TreeNodeCollection theNodes)
{
foreach (TreeNode theNode in theNodes)
{
theNode.BackColor = colorList[theNode.Level];
theNode.NodeFont = fontList[theNode.Level];
if (theNode.Nodes.Count > 0) colorTreeViewNodes(theNode.Nodes);
}
}
Этот код использует свойство ' Level каждого TreeNode в качестве индекса в списках цветов и шрифтов.
BillWoodruff
Рад, что вы нашли мой ответ полезным. Обратите внимание, что Microsoft TreeView имеет некоторые известные проблемы при назначении шрифтов нескольких размеров на основе уровня узла: вы можете увидеть текст узла обрезанным в большем размере.
Это одна из многих причин, по которой я перешел на сторонний коммерческий TreeView для WinForms.