为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
白衣染霜花 2018-07-31 09:09:09
窗体的textbox控件,如果里面的text要换行,好像需要用 \r\n 才能做到,\r 我没用过,有点转不过来,只知道 \r 回车 和 \n 换行比如我在窗体load事件写如下代码:string c = "我是中国\n人";MessageBox.Show(c);textBox1.Text = c;messagebox和textbox显示竟然是不一样的,messagebox换了行,而textbox却没有换行,不明白……
查看完整描述

2 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

\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#语言并没有关系。


查看完整回答
反对 回复 2018-08-06
?
慕后森

TA贡献1802条经验 获得超5个赞

\r 创建了一个新的行 \n 移动到新的行
messagebox里的文字是label
label会直译\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时 指针会移动到下一行 如果没有下一行 就会出现没有换行的现象了

查看完整回答
反对 回复 2018-08-06
  • 2 回答
  • 0 关注
  • 1539 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信