新生产线不MessageBox的工作在C#/ WPF

问题描述 投票:15回答:4

简短的问题:我在我的资源的字符串:“这是我的测试字符串{0} \ n \ NTEST”

我试图显示这个字符串在我的消息框:

MessageBox.Show(String.Format(Properties.Resources.About, 
    Constants.VERSION), 
    Properties.Resources.About_Title, MessageBoxButton.OK, 
    MessageBoxImage.Information);

但是我没有得到新的生产线。成\ n仍然显示为字符,而不是新的生产线。

我还试图用像mystring.Replace一种变通方法(“\ n”,Environment.NewLine),但这也不会改变任何东西。

我究竟做错了什么?

编辑:有趣的事情提:替换(“\ n”,“somethingelse”)不会改变任何东西。

EDIT2:Shift +我的资源,文件,而不是\ n输入似乎工作...奇怪的行为呢

c# wpf messagebox
4个回答
23
投票

将要投入新的生产线,并在您使用资源字符串代码的占位符,只需用新行替换它:字符串资源:“这是第一行{0}这是第二行{0}此。是第三行“。你会使用这样这个资源字符串:MessageBox.Show(的String.format(MyStringResourceClass.MyStringPropertyName,Environment.NewLine));

要么

非常规的方法,但我刚才得到它从字直接(或任何其它地方)应对换行符和粘贴的资源字符串文件中工作。

It was simple..
OR

\时通过使用消息框显示它或者将其分配给文本框或每当你在接口使用它r \ n个字符将被转换为新的生产线。

在C#(像大多数C衍生的语言),转义字符用于表示特殊字符,例如返回和标签,+代替&字符串连接被使用。

为了使在C#代码的工作,你有两个选择......第一个是简单地与返回转义字符\ n翼更换新行:

MessageBox.Show("this is first line" + "\n" + "this is second line");

另一种方法,更正确的是不是理论上可能的变化取决于你所使用的系统(但不太可能)上Environment.NewLine来代替它。

MessageBox.Show("this is first line" + Environment.NewLine + "this is second line");

7
投票

在资源编辑器单独使用Shift + Enter您的字符串的内容。否则,编辑您的ResX文件中的XML编辑器,并使用回车键为您的资源字符串的新线。

请参考以下链接查看详细信息:Carriage Return/Line in ResX file.


5
投票

尝试这个:

    String outputMessage = string.Format("Line 1{0}Line 2{0}Line 3", Environment.NewLine);
    MessageBox.Show(outputMessage);

进一步的实例与另一个变量:

    String anotherValue = "Line 4";
    String outputMessage = string.Format("Line 1{0}Line 2{0}Line 3{0}{1}", Environment.NewLine, anotherValue);
    MessageBox.Show(outputMessage);

0
投票

尝试这个

除去MessageBoxButtons.OK和MessageBoxImage。信息。

 MessageBox.Show(String.Format(Properties.Resources.About, 
Constants.VERSION), 
Properties.Resources.About_Title);
© www.soinside.com 2019 - 2024. All rights reserved.