【问题标题】:How do I align text like columns in a treeview?如何在树视图中对齐文本,如列?
【发布时间】:2016-05-04 14:29:13
【问题描述】:

我有一个 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 中使用的不同节点有关,但我不知道如何正确对齐我的数据。

【问题讨论】:

标签: c# string winforms treeview


【解决方案1】:

好像你需要为 TreeView 设置等宽字体。

这里有一个类似的问题,例如等宽字体 (FontFamily.GenericMonospace):

C# .NET multiline TextBox with same-width characters

【讨论】:

  • +1,这为我修复了奇怪的文本对齐错误,而其他方法都不起作用。 Consolas 是一种流行的等宽字体。请参阅此处了解更多信息:en.wikipedia.org/wiki/Monospaced_font
【解决方案2】:

这对于.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));

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

【讨论】:

  • 不幸的是,这仍然没有显示在排列良好的列中。同样,当百分比只有 1 个小数而不是 2 时,该行的其余部分将向左移动一个字符。就像 padLeft/padRight 方法没有填充所需的额外字符。
  • 无论你做什么,你总是会因为各个字符的不同宽度而面临错位。
【解决方案3】:
【解决方案4】:

试着改变treeView的字体来使用一个

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-05
    • 2013-07-16
    相关资源
    最近更新 更多