繁体   English   中英

C#:如何在 MessageBox 中显示换行符

[英]C#: How to show a newline within a MessageBox

我经常使用MessageBox.Show("This is my message");显示消息。 .
有时我需要在较长的文本中换行。 通常我使用一种变体,每行放一个字符串:
MessageBox.Show("Line1" + Environment.NewLine + "Line2" + Environment.NewLine + "Line3");
但我不喜欢“开销”。 所以我找到了以下解决方案:
MessageBox.Show(string.Format("Line1{0}Line2{0}Line3", Environment.NewLine));
有没有更好的解决方案,开销更少?

你几乎已经找到了两种方法来做到这一点。 第三个是字符串插值(以避免“额外的” string.Format调用。

$"Line1 {Environment.NewLine} Line2 {Environment.NewLine} Line3"

提琴手示例: https://dotnetfiddle.net/16Wy57

string.Format方式几乎是官方格式文档中的示例

我更喜欢插值,因为它避免了我的代码中额外的 function,但实际上这一切都归结为偏好。

在任何选项中确实没有“开销”,因为操作很简单,并且在一天结束时,您可以连接字符串。

如果您想要一个开销较小的可扩展解决方案,这里有一个干净且可扩展的解决方案:

using System;

var messageLines = new string[]
{
    "Some line here",
    "More lines",
    "Could be loaded from a database",
    "With each row as a string"
};

MessageBox.Show(string.Join(Environment.NewLine, messageLines));

MessageBox.Show("First Line\nSecond Line\nThird Line");
\n在适用于 MessageBox 的字符串中插入新行。
在文件中注意这一点。 在那里你可以找到\r\n\n\r\r\n - 这取决于操作系统或文件格式。

逐字字符串,只需确保字符串上没有标识。

string v = 
@"Hello, 
! Today is 
, it's 
now.";

Console.WriteLine(v);

Output:

Hello, 
! Today is 
, it's 
now.

演示: https://dotnetfiddle.net/WvjGfC

如果您制作自己的 MessageBox class,Luke Parker 的示例可以稍微改进一下(遗憾的是,它不能作为扩展方法完成,因为没有可用的 MessageBox 实例):

namespace System.Windows.Forms
{
    public static class MessageBoxLines
    {
        public static void Show(string[] lines) 
        {
            MessageBox.Show(string.Join(Environment.NewLine, lines));
        }
    }
}

你会像这样使用它:

MessageBoxLines.Show(new[] { "Line1", "Line2"} );

您将为其他 forms 添加更多重载或可选参数(那些带有标题,指定按钮等


如果您使用 params 数组,这可以进一步整理:

    public static void Show(params string[] lines) 
    {
        MessageBox.Show(string.Join(Environment.NewLine, lines));
    }

您会使用如下:

MessageBoxLines.Show("Line1", "Line2" );

但是使用参数可能会干扰其他重载(按钮等)的标准模式,因此您必须通过重新排列顺序使参数在最后一个或将所有参数放入参数中来获得更可爱的工作。 object 并将它们挖掘出来/将它们恢复到应有的状态(这有点小丑智能感知)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM