C# 请人讲一下字符转义 \r\n

窗体的textbox控件,如果里面的text要换行,好像需要用 \r\n 才能做到,

\r 我没用过,有点转不过来,只知道 \r 回车 和 \n 换行

比如我在窗体load事件写如下代码:

string c = "我是中国\n人";
MessageBox.Show(c);
textBox1.Text = c;

messagebox和textbox显示竟然是不一样的,messagebox换了行,而textbox却没有换行,不明白……

白衣染霜花
浏览 1660回答 2
2回答

慕工程0101907

\r回车,从最老的打字机引入的概念,表示回到本行的开始位置;\n换行,同样来自打印技术的术语,表示跳转到下一行。\r\n连用,表示跳到下一行,并且返回到下一行的起始位置。这也是windows系统标准的换行符。在unix/linux,\n就表示换行。messagebox和textbox,只是实现的方式不同而已,总是用\r\n,是没有问题的。但考虑到跨平台,更好的习惯是用Environment.NewLine属性。追问可以在我的问题中回复一下我的回答者之一盛阿盛吗?他在问你问题   回答者: 盛啊盛追答你的Environment.NewLine 是在说C#么?  ------------------------------------------------------- 这个属性表示换行符,对于不同的环境将编译成不同的内容。在windows,这个属性被编译为\r\n,在linux,这个属性被编译为\n。 虽然微软的.net框架还不能跨平台,但是mono已经有一个跨平台的解决方案。 这和C#语言并没有关系。

慕后森

\r 创建了一个新的行 \n 移动到新的行messagebox里的文字是labellabel会直译\n 因为label是不能进行输入的 所以label是不需要创建一个新行的而textbox是可输入的textbox就算设置了mtline也需要\r\n才能换新行 这和键盘输入方面有关b0sus你的Environment.NewLine 是在说C#么?=================================================后来查了一下 b0sus 的Environment.NewLine是可以夸平台的=================================================然后做一下补充:一般情况下 LZ的问题会体现在用textbox进行编辑时出现换行丢失当我们使用textbox进行多行内容的录入时,按回车textbox会创建一个新的行回车键的ask是13 代表\r 所以会换行 但写入的只有\n而当我们保存了这段文本 并将文本赋值给一个文本框时换行就丢失了textbox的机制比较特殊 当它遇到\r时会创建一个新的行 当它遇到\n时 指针会移动到下一行 如果没有下一行 就会出现没有换行的现象了
打开App,查看更多内容
随时随地看视频慕课网APP