【问题标题】:RichTextBox does not copy new lines to the clipboardRichTextBox 不会将新行复制到剪贴板
【发布时间】:2022-01-24 13:42:04
【问题描述】:

在代码中,我将格式化文本生成到 WPF RichTextBox 中。我使用 Environment.NewLine 插入换行符。一切看起来都很好。但是,当我将 RichTextBox 的内容复制到剪贴板(使用 RichTextBox 上下文菜单)并将其粘贴到 Word 或写字板中时,换行符消失了。但是,如果我将剪贴板的内容粘贴为纯文本(例如,粘贴到记事本中),新行不会消失。不知道为什么会这样?

更新:

// _richTextBox is my object RichTextBox
var doc = _richTextBox.Document;
var paragraph = doc.Blocks.FirstOrDefault() as Paragraph;
if (paragraph == null) return;

var span = new Span();
span.Inlines.Add(new Underline(new Run($"Header: {Environment.NewLine}")));
span.Inlines.Add(new Run("Text content"));

paragraph.Inlines.Add(span);

【问题讨论】:

  • 不确定,但是否因为\r\n vs \n 问题?根据docs.microsoft.com/en-us/dotnet/api/…,对于Windows,它是\r\n,对于Unix,它是\n
  • 也许你可以提供一些代码。另外,请检查此stackoverflow.com/a/4624392/4688321
  • Environment.NewLine 在我的操作系统(Win 10)\r\n 上插入,应该是正确的。
  • @kiner_shah 我为你添加了代码。我也看了推荐的帖子。不幸的是,这并不能解决我的问题。我想知道为什么原生 RichTextBox 复制到剪贴板功能在粘贴到 Word 文档时不插入换行符。
  • 它似乎不是minimal reproducible example,因为缺少某些部分,例如doc 是什么?你在哪里复制到剪贴板等?

标签: c# wpf richtextbox


【解决方案1】:

最终解决方案很简单。我没有注意到有一个LineBreak 对象。如果您使用 LineBreak 而不是 \r\n (Environment.NewLine),则换行符在纯文本和格式化文本中都可以使用。

【讨论】:

    猜你喜欢
    • 2010-11-07
    • 1970-01-01
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    相关资源
    最近更新 更多