c# - 当涉及到 MessageBox 时,String.Format() 的对齐方式表现不同

标签 c# messagebox string.format

我正在使用 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);

控制台结果如下所示。

Console Result

但是,当我尝试在 MessageBox 上显示它时,列正在移动。不知何故,空间被吞没了。

 MessageBox.Show(result, "MBox Test");

MessageBox result

这也没关系,因为我对 .Net 的“MessageBox”类不太了解。它有很多限制。

所以我决定实现一个自定义表单来显示此消息。我尝试过使用 Label 和 RichTextBox。但不幸的是,结果与 MessageBox 完全相同。

我很困惑。为什么.Net自带的控件不支持String.Format()的对齐方式。有什么办法可以处理这种情况吗?

最佳答案

控制台使用 monospaced font ,而消息框使用可变宽度字体。这就是为什么消息框中没有保留对齐方式的原因。

在控制台中,空格与任何其他字符的宽度相同。在消息框中,空格没有那么宽(“i”和“l”等字符也没有那么宽),因此内容不会按照您希望的方式排列。

最接近的保持消息框中对齐的方法是使用制表符而不是空格,但即使这样,由于某些单词的长度,内容也可能无法对齐。

关于c# - 当涉及到 MessageBox 时,String.Format() 的对齐方式表现不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36881093/

相关文章:

c# - 单击网格列时出现异常

c# - ListBox 不显示绑定(bind)数据

.net - 使用 .NET 字符串格式化,如何格式化字符串以显示零 (0) 的空白(空字符串)?

asp.net-mvc-3 - 货币格式MVC

c# - C++/CLI 中使用的动态 C# 对象

c# - MonoTouch 绑定(bind)协议(protocol)到不同的 Objective-C 类型名称,

c++ - 我如何在 Messagebox api 函数中显示 dWord 值

c# - 单击“确定”按钮后,进行页面重定向

c# - 显示 MessageBox 取消 SupressKeyPress=true

c# - 如何根据数字是正数还是负数应用不同的格式