我正在使用 String.Format() 来格式化一些文本信息,它与 msdn 中记录的“Console.WriteLine()”完美配合。 .
我的代码是这样的:
StringBuilder strBuilder = new StringBuilder();
strBuilder.AppendLine("Summary Information:");
strBuilder.AppendFormat("{0,-10}{1,-8}{2,-10}{3,-30}{4,-7}\n", "Header1", "Header2", "Header3", "Header4", "Header5");
strBuilder.AppendFormat("{0,-10}{1,-8}{2,-10}{3,-30}{4,-7}\n\n", "A", "1", "Y", "Long Information", "13");
string result = strBuilder.ToString();
Console.WriteLine(result);
控制台结果如下所示。
但是,当我尝试在 MessageBox 上显示它时,列正在移动。不知何故,空间被吞没了。
MessageBox.Show(result, "MBox Test");
这也没关系,因为我对 .Net 的“MessageBox”类不太了解。它有很多限制。
所以我决定实现一个自定义表单来显示此消息。我尝试过使用 Label 和 RichTextBox。但不幸的是,结果与 MessageBox 完全相同。
我很困惑。为什么.Net自带的控件不支持String.Format()的对齐方式。有什么办法可以处理这种情况吗?
最佳答案
控制台使用 monospaced font ,而消息框使用可变宽度字体。这就是为什么消息框中没有保留对齐方式的原因。
在控制台中,空格与任何其他字符的宽度相同。在消息框中,空格没有那么宽(“i”和“l”等字符也没有那么宽),因此内容不会按照您希望的方式排列。
最接近的保持消息框中对齐的方法是使用制表符而不是空格,但即使这样,由于某些单词的长度,内容也可能无法对齐。
关于c# - 当涉及到 MessageBox 时,String.Format() 的对齐方式表现不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36881093/