在c# /WPF的MessageBox中,新行不能工作

本文关键字:新行 不能 工作 MessageBox WPF | 更新日期: 2023-09-27 17:50:11

简短的问题:我有一个字符串在我的资源:"这是我的测试字符串{0}'n'nTest"

我想在我的消息框中显示这个字符串:

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

但是我没有得到新的行。'n仍然显示为字符,而不是新行。

我还尝试使用像mystring这样的解决方案。替换("'n", Environment.NewLine),但这也不会改变任何东西。

我做错了什么?

编辑:有趣的是:Replace("'n", "somethingelse")不会改变任何东西。

Edit2: Shift+Enter在我的资源文件,而不是'n似乎工作…奇怪的行为

在c# /WPF的MessageBox中,新行不能工作

在你想要放新行的地方放一个占位符,在你使用该资源字符串的代码中,只需将其替换为new line: string resource: "这是第一行。{0}这是第二行。{0}这是第三行。"您将像这样使用这个资源字符串:MessageBox.Show(string. format (MyStringResourceClass. MyStringResourceClass.)

MyStringPropertyName Environment.NewLine));

非常规的方法但我刚刚通过直接从word(或任何其他地方)复制换行符使其工作&将其粘贴到资源字符串文件中。

It was simple..
OR

'r'n字符将被转换为新的行,当您使用消息框或将其分配给文本框或当您在界面中使用它时。

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

要使你的代码在c#下工作,你有两个选择…第一种是简单地将换行符替换为返回转义字符'n ala:

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

另一种更正确的方法是将其替换为Environment。换行符,理论上可以根据您使用的系统而更改(尽管不太可能)。

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

在资源编辑器中使用shift+enter分隔字符串内容。或者,在xml编辑器中编辑您的ResX文件,并使用enter键为您的资源字符串创建新行。

请参考此链接了解详细信息:ResX文件中的回车/行。

试试这个:

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

试试这个

删除MessageBoxButtons。OK和MessageBoxImage。信息。

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