> 文档中心 > [C# VSTO Word]word中段落回车符到底是什么?来看看它的真面目,是否和你想象的一样?

[C# VSTO Word]word中段落回车符到底是什么?来看看它的真面目,是否和你想象的一样?


[C# VSTO Word]word中段落回车符到底是什么?来看看它的真面目,是否和你想象的一样?

目录

  • [C# VSTO Word]word中段落回车符到底是什么?来看看它的真面目,是否和你想象的一样?
    • 背景问题
    • 通过代码获取word中[选定内容]识别真相
      • 对于普通段落
        • word及程序运行结果
        • 断点识真相
      • 对于带有公式的段落
        • Word及程序运行结果
        • 断点识真相
    • 采用通用回车符是否对Word原文有影响?
      • 代码实现替换
      • 对于普通段落
        • word及程序运行结果
      • 对于带有公式的段落
        • Word及程序运行结果
      • 断点识真相
    • 最终结论
    • 美图分享

请添加图片描述

背景问题

word中段落回车符到底是什么?

  • 主要是在开发VSTO Word时,在Word中显示为换行的段落回车符。来到了C#中的一些From窗格控件中显示时(例如textbox),居然不显示为换行了。
  • 本来还以为被控件把段落回车符给阉割了,谁知道根本就不是这样。
  • 我们一起通过实验测试,一起把真相给揪出来吧!!!
  • 这样以后开发过程中,就又可以一起快乐地避坑了。
    [C# VSTO Word]word中段落回车符到底是什么?来看看它的真面目,是否和你想象的一样?

通过代码获取word中[选定内容]识别真相

public string Run_GetText(Word.Selection selection){    string text = selection.Text;    //去除表格中的制表符    text = text.Replace("\a", "");    //去除首尾空格和首尾回车符【\n】    text = text.Trim();    //将[选定内容]中间的段落回车符【\r】,替换成通用回车符。以便于textBox等控件能够识别的【Environment.NewLine】即【\r\n】    text = text.Replace("\r", Environment.NewLine);    return text;}

对于普通段落

word及程序运行结果

[C# VSTO Word]word中段落回车符到底是什么?来看看它的真面目,是否和你想象的一样?
[C# VSTO Word]word中段落回车符到底是什么?来看看它的真面目,是否和你想象的一样?

断点识真相

代码运行中,通过断点可以看到。word默认的段落回车符是【\r】
[C# VSTO Word]word中段落回车符到底是什么?来看看它的真面目,是否和你想象的一样?

对于带有公式的段落

Word及程序运行结果

[C# VSTO Word]word中段落回车符到底是什么?来看看它的真面目,是否和你想象的一样?
[C# VSTO Word]word中段落回车符到底是什么?来看看它的真面目,是否和你想象的一样?
[C# VSTO Word]word中段落回车符到底是什么?来看看它的真面目,是否和你想象的一样?

断点识真相

代码运行中,通过断点可以看到。word中公式的组成中含有【\r】
[C# VSTO Word]word中段落回车符到底是什么?来看看它的真面目,是否和你想象的一样?

采用通用回车符是否对Word原文有影响?

代码实现替换

通用回车符。以便于textBox等控件能够识别的【Environment.NewLine】即【\r\n】
就是说,得采用通用回车符,C#中的控件才能正确显示换行。

    //将[选定内容]中间的段落回车符【\r】,替换成通用回车符。以便于textBox等控件能够识别的【Environment.NewLine】即【\r\n】    text = text.Replace("\r", Environment.NewLine);

对于普通段落

word及程序运行结果

[C# VSTO Word]word中段落回车符到底是什么?来看看它的真面目,是否和你想象的一样?

对于带有公式的段落

Word及程序运行结果

对于公式,除了文本化后,不复原态外,结果和上面的一样
[C# VSTO Word]word中段落回车符到底是什么?来看看它的真面目,是否和你想象的一样?

断点识真相

通过代码断点,可以看到粘贴到word中后,会被恢复成word默认段落回车符【\r】
[C# VSTO Word]word中段落回车符到底是什么?来看看它的真面目,是否和你想象的一样?
[C# VSTO Word]word中段落回车符到底是什么?来看看它的真面目,是否和你想象的一样?

最终结论

  • 哪怕替换成通用回车符
  • 粘贴到word中后,也会恢复成word默认段落回车符【\r】
  • 所以不用担心通用回车符不会与word中的段落符不兼容。

美图分享

请添加图片描述
请添加图片描述

风车动漫