新行在C#/ WPF中的MessageBox中不起作用

时间:2014-03-14 10:29:46

标签: c# wpf messagebox

简短的问题:我的资源中有一个字符串:"这是我的测试字符串{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 + Enter在我的资源文件而不是\ n似乎工作......无论如何都是奇怪的行为

4 个答案:

答案 0 :(得分:22)

  

将占位符放在要放置新行的位置,并在使用该资源字符串的代码中,只需将其替换为新行:string resource:"这是第一行。{0}这是第二行line。{0}这是第三行。"您将使用此资源字符串,如下所示:MessageBox.Show(string.Format(MyStringResourceClass.MyStringPropertyName,Environment.NewLine));

OR

非常规方法     但我现在刚刚通过直接(或任何其他地方)和&将其粘贴在资源字符串文件中。

It was simple..
OR
当您使用消息框显示字符或将其分配到文本框或在界面中使用时,

\ r \ n字符将转换为新行。

在C#中(与大多数C派生语言一样),转义字符用于表示特殊字符,例如return和tab,而+用于代替&用于字符串连接。

要使您的代码在C#下工作,您有两个选择......第一个是简单地用返回转义字符替换NewLine \ n ala:

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");

答案 1 :(得分:6)

在资源编辑器中,使用shift + enter分隔字符串内容。或者,在xml编辑器中编辑ResX文件,然后使用回车键为资源字符串创建一个新行。

有关详细信息,请参阅此链接:Carriage Return/Line in ResX file.

答案 2 :(得分: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);

答案 3 :(得分:0)

尝试一下

删除MessageBoxButtons.OK和MessageBoxImage。信息。

 MessageBox.Show(String.Format(Properties.Resources.About, 
Constants.VERSION), 
Properties.Resources.About_Title);