我对编程很新,我只是在C#.NET中编写了一个简单的应用程序来检索有关系统驱动器空间的信息。该程序运行正常,但我正在努力格式化输出。
见输出:
我尝试使用填充来使文本在富文本框中以列格式排列,但输出没有排列,因为如果有多个驱动器,则驱动器名称是不同长度抛出填充物。即使驱动器号回复为M:另一个作为I:字母大小的差异足以在填充时抛弃对齐。
我想知道是否有办法将每个字符串值强制为特定长度,以便均匀地应用填充,或者如果可能有更好的格式化输出的方法。提前感谢您的时间,如果有任何进一步的信息有用,请告诉我们!
答案 0 :(得分:1)
注意:其中一条评论提出了一个重要问题,即问题是指System.Windows.Forms.RichTextBox
(WinForms)还是System.Windows.Controls.RichTextBox
(WPF)控件。此答案仅将 应用于RichTextBox
的WinForms版本,因此如果您使用的是WPF,则不适用。
最重要的是,评论中提到的是,您需要使用Monospaced font。
由于您声明使用的是RichTextBox
,因此您需要知道如何将其设置为使用您选择的等宽字体。
为此,您可以使用RichTextBox.SelectionFont
属性。
有关更一般的说明,请参阅此MSDN文章:Setting Font Attributes for the Windows Forms RichTextBox Control
设置RichTextBox.SelectionFont
属性后,只有添加到控件之后的文本才会使用指定的字体。要将字体应用于现有文本(即填充RichTextBox
,然后将字体更改为适当的等宽字体),请查看this answer,它会准确地告诉您怎么做。
完成后,仍然可以在每个字符串的末尾添加适当数量的空格,以便下一个数据出现在适当的位置。您可能正在使用String.PadRight
,但有关填充字符串的更多常规信息,请查看此MSDN文章:Padding Strings in the .NET Framework
答案 1 :(得分:0)
这是字符串格式化示例:
string varOne = "Line One";
double varTwo = 15/100;
string output= String.Format("{0,-10} {1,5:P1}", varOne, varTwo);
//expected output is
//Line One 15 %
大括号中的格式属性是: {index [,alignment] [:formatString]}