c#Treeview Node,带有格式化文本,例如标签&新线

时间:2008-11-19 10:54:00

标签: c# treeview format treenode

是否可以(通过使用stock c#TreeView)获得多行树节点?

此外,是否可以将控制字符添加到TreeNode的文本,例如'\ t'?通过向TreeNode添加列也可以实现相同的效果。这有可能吗?

3 个答案:

答案 0 :(得分:2)

我不相信使用WinForms是可行的,至少在没有绘制自己的节点的情况下。你可能能够使用“所有者绘制的”treenode在WinForms中实现这一点,但我不知道。

但WPF本身支持这一点。

答案 1 :(得分:1)

从您的问题来看,您是否使用ASP.NET或WinForms并不是很清楚。如果你在ASP.NET中,你可以尝试使用PRE标签来格式化......?

你所看到的Ra-Ajax TreeView可以看到here的一个例子,它可以有任意套数量的HTML和/或甚至是其中的控件,这大多优于ASP中内置的TreeView 。净。 (免责声明;我使用Ra-Ajax)

这使您可以根据需要格式化TreeView的内容。虽然如果你完全狂暴,你仍然冒着因太多空间或类似的东西而制造“展示文物”的风险......

答案 2 :(得分:0)

无法在TreeNode中有效使用制表符。 无论如何,我有一个解决方法:

字体“Consolas”每个字母的空间相等,因此您可以轻松地使用空格。 GetEmptyInfoByIndex方法返回一个自定义长度的空格字符串,以填充间隙直到指定的长度。这里= 20。

mynode.NodeFont = new System.Drawing.Font("Consolas", 9,FontStyle.Regular);

string displaytext = String.Format(CultureInfo.InvariantCulture, "{0}{2} = {1}", mystringOfDifferentLenght, myresult, GetEmptyInfoByIndex(mystringOfDifferentLength, 20));
mynode.Text = displaytext;
rootnode.Nodes.Add(mynode);

private string GetEmptyInfoByIndex(string _string, int maxLength)
    {
        string retstr = string.Empty;
        for (int i = 0; i < maxLength - _string.Length; i++)
        {
            retstr += " ";
        }
        return retstr;
    }

Proof here!