C# 如何将文本与树视图中的列对齐?

C# 如何将文本与树视图中的列对齐?,c#,string,winforms,treeview,C#,String,Winforms,Treeview,我有一个树状视图,我想在那里很好地安排我的数据 我的字符串格式如下: string name = ItemName; string current = ("Current: " + info.Current.ToString() + " " + identifier); string maximum = ("Maximum: " + info.Max.ToString() + " " + identifier); string minimum = ("Minimum: " + info.Min.

我有一个树状视图,我想在那里很好地安排我的数据

我的字符串格式如下:

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
写入控制台时,它会按我想要的方式打印,如下所示(值为off,但这与此无关):

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

我遵循了第页上的示例,但这对我不起作用


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

这是
.PadRight()
.padlight()
的理想情况


此代码将确保每个参数每次占用的空间相同

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

在web上可以找到许多示例控件:


看来您需要为TreeView设置单间距字体

下面是一个类似的问题,例如单间距字体(
FontFamily.GenericMonospace
):


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

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

似乎您需要为TreeView设置等距字体@这似乎是我的完美解决方案!不幸的是,这仍然没有显示在整齐排列的列中。此外,每当百分比只有1个小数点而不是2个小数点时,该行的其余部分将向左移动一个字符。这就像padLeft/padRight方法无法填充所需的额外字符。无论你做什么,由于单个字符的宽度不同,你总是会面临未对齐问题。+1,这为我修复了奇怪的文本对齐错误,而其他方法都不起作用。ConsoleAS是一种流行的单空间字体。请参见此处了解更多信息:
string output = 
        string.Format("{0}{1}{2}{3}{4}", 
                       name.PadRight(20), 
                       current.PadRight(30), 
                       maximum.PadRight(30), 
                       minimum.PadRight(30), 
                       average.PadRight(30));
non-proportional font like "Courier" , "Consolas"