简短的问题:我的资源中有一个字符串:"这是我的测试字符串{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似乎工作......无论如何都是奇怪的行为
答案 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);