如何对齐树视图中的列等文本?

How do I align text like columns in a treeview?

我有一个 TreeView,我想在其中很好地排列我的数据。

我这样格式化我的字符串:

string name = ItemName;
string current = ("Current: " + info.Current.ToString() + " " + identifier);
string maximum = ("Maximum: " + info.Max.ToString() + " " + identifier);
string minimum = ("Minimum: " + info.Min.ToString() + " " + identifier);

string output = string.Format("{0,-20}{1,-30}{2,-30}{3,-30}{4,-30}", name, current, maximum, minimum, average);
dataNode.Text = output;

当我将 output 写入控制台时,它会按照我想要的方式打印它,就像这样(值已关闭,但这无关紧要):

Load                Current: 9,23 %               Maximum: 33,33 %              Minimum: 6,06 %               Average: 0 %
Temperature         Current: 40 °C                Maximum: 49 °C                Minimum: 38 °C                Average: 0 °C
Clock               Current: 1200 Mhz             Maximum: 2800,09 Mhz          Minimum: 1200 Mhz             Average: 0 Mhz
etc..

但是当我将完全相同的字符串打印到 TreeView 时,它显示如下:

我按照 this 页面上的示例进行操作,但这对我不起作用。

我想这与我在 TreeView 中使用的不同节点有关,但我不知道如何正确对齐我的数据。

这是 .PadRight().PadLeft() 的完美情况。

string output = 
        string.Format("{0}{1}{2}{3}{4}", 
                       name.PadRight(20), 
                       current.PadRight(30), 
                       maximum.PadRight(30), 
                       minimum.PadRight(30), 
                       average.PadRight(30));

这段代码会保证每个参数占用的space每次都是一样的。

您可以使用其他控件如何创建列,例如:

网上有许多示例控件:

TreeViewAdv for .Net

TreeView with Columns

ContainerListView and TreeListView

您似乎需要为 TreeView 设置等宽字体。

这是一个类似的问题,其中包含等宽字体 (FontFamily.GenericMonospace) 的示例:

C# .NET multiline TextBox with same-width characters

尝试将 treeView 的字体更改为使用

non-proportional font like "Courier" , "Consolas"