C#:在 RichTextBox 中粘贴 RTF,但保留颜色和格式(即:粗体、下划线等)

2023-12-02

是否可以将文本粘贴到富文本框中,同时保留粘贴内容在富文本框中使用的字体?

换句话说,我想从 Word 中复制一些已格式化的内容(即:使用字体 X 并带有下划线和蓝色的文本),然后将其粘贴到我的 RichTextBox 中。

我希望粘贴的内容具有与 RichTextBox 相同的字体,但保留其原始颜色和下划线。

这样的事可能吗?

我用的是winform。

Thanks


这是不可能开箱即用的。但你可以这样做:

public void SpecialPaste()
{
    var helperRichTextBox = new RichTextBox();
    helperRichTextBox.Paste();
    for(int i=0;i<helperRichTextBox.TextLength;++i)
    {
        helperRichTextBox.SelectionStart = i;
        helperRichTextBox.SelectionLength = 1;
        helperRichTextBox.SelectionFont = new Font(richTextBox1.SelectionFont.FontFamily, richTextBox1.SelectionFont.Size,helperRichTextBox.SelectionFont.Style);
    }

    richTextBox1.SelectedRtf = helperRichTextBox.Rtf;
}

这会将粘贴的 RTF 的字体更改为粘贴时插入符号位置之前的字符的字体。
我认为如果您粘贴的文本很大(呃),那么很快就会出现问题。此外,这可以通过某种方式进行优化,即按照汉斯的建议,为具有相同基本字体的行中的所有字符仅设置一次字体。

Update:
这是优化版本,它为具有相同原始字体的连接字符集设置字体:

public void SpecialPaste()
{
    var helperRichTextBox = new RichTextBox();
    helperRichTextBox.Paste();
    helperRichTextBox.SelectionStart = 0;
    helperRichTextBox.SelectionLength = 1;

    Font lastFont = helperRichTextBox.SelectionFont;
    int lastFontChange = 0;
    for (int i = 0; i < helperRichTextBox.TextLength; ++i)
    {
        helperRichTextBox.SelectionStart = i;
        helperRichTextBox.SelectionLength = 1;
        if (!helperRichTextBox.SelectionFont.Equals(lastFont))
        {
            lastFont = helperRichTextBox.SelectionFont;
            helperRichTextBox.SelectionStart = lastFontChange;
            helperRichTextBox.SelectionLength = i - lastFontChange;
            helperRichTextBox.SelectionFont = new Font(richTextBox1.SelectionFont.FontFamily, richTextBox1.SelectionFont.Size, helperRichTextBox.SelectionFont.Style);
            lastFontChange = i;
        }
    }
    helperRichTextBox.SelectionStart = helperRichTextBox.TextLength-1;
    helperRichTextBox.SelectionLength = 1;
    helperRichTextBox.SelectionFont = new Font(richTextBox1.Font.FontFamily, richTextBox1.Font.Size, helperRichTextBox.SelectionFont.Style);

    richTextBox1.SelectedRtf = helperRichTextBox.Rtf;
}

这是相当丑陋的代码,我相信它可以被改进和清理。但它做了它应该做的事。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#:在 RichTextBox 中粘贴 RTF,但保留颜色和格式(即:粗体、下划线等) 的相关文章

  • 同一个盒子上的进程间通信 - 2 个应用程序或进程之间的通信

    在同一机器上的应用程序之间实现进程间通信的最佳方法是什么 两者都是用 C 编写的 管理器应用程序将向其他应用程序发送命令 例如 停止 启动 它还将监视应用程序并可能要求提供数据 所有应用程序都将在同一台运行 Windows 7 操作系统的计
  • 使用脚本取消设置 PDF 字体

    我正在使用 xhtml2pdf 库自动创建 PDF 几个月前我有过这个问题 https stackoverflow com questions 25203219 xhtml2pdf doesnt embed helvetica 库嵌入了我没
  • 为什么将静态类内初始化成员传递给采用 const 引用的函数需要该成员有定义?

    这是基于最初提出的问题here https stackoverflow com questions 14547370 confusion about in class initialization of static data member
  • C# 如何更改 windows.forms.listview 中的网格线颜色

    如何更改 windows forms listview 中的网格线颜色 我认为没有办法在不覆盖 Paint Event 的情况下在列表视图上执行此操作 但是 如果您能够切换到网格视图 您可以这样做 this dataGridView1 Gr
  • 如何在 c#.net 中将十进制转换为 ASCII?

    谁能帮助我如何使用 C net 将十进制转换为 ASCII 当我在文本框 1 中输入小数时 单击 转换 按钮后 结果将显示在文本框 2 中 我的问题是如何将十进制转换为 ASCII 的代码 这个怎么做 这是我在网上找到的一个简单的解决方案
  • 如何使用OpenCV的归一化相关性?

    如何使用 OpenCV 的归一化相关性 有人可以提供代码示例吗 我的问题 我有一个螺丝头图像 需要找到螺丝的中心 所以我正在考虑使用 OpenCV 相关性 这是一个好主意吗 您可以在下面的链接下找到示例图像 http imageshack
  • 格式化具有 X 位小数和 InvariantCulture 的数字?

    我想使用格式化数字ToString CultureInfo InvariantCulture 并且精确到小数点后 5 位 这可以使用ToString N5 我怎样才能同时做这两件事 怎么样使用重载既需要格式又需要文化 http msdn m
  • 在 OpenCV C++ 中使用 gpu::GpuMat

    我想知道如何修改gpu GpuMat 事实上我想知道是否可以使用gpu GpuMat like a cv Mat 我想做这样的事情 cv namedWindow Result cv Mat src host cv imread lena j
  • 空别名共享指针是否是无操作删除共享指针的良好替代方案?

    有时我需要shared ptr具有无操作删除器的实例 因为 API 期望shared ptr例如 它想要存储有限的时间 但我得到了一个原始指针 不允许我拥有比我运行的时间更长的时间 对于这种情况 我一直使用无操作删除器 例如 const v
  • 在 C# 中创建新 List 的这三种方式有什么区别?

    这三种创建新的方式有什么区别List
  • “constexpr”有什么用?

    我实在是找不到它有什么用处 我的第一个想法是我可以用它来实现 按合同设计 而不使用如下宏 struct S S constexpr int i S i static assert i lt 9 i must be lt 9 S int i
  • 为什么 _popen 在这里可以工作,而 boost::process 却不能?

    我在 Windows 上使用 popen 有以下工作代码 m pGNUPlot popen gnuplot bin gnuplot exe w fprintf m pGNUPlot set term win n fprintf m pGNU
  • 如何在单击按钮时关闭 .exe 应用程序

    谁能告诉我如何使用 C 在单击按钮时关闭 exe 文件 我知道如何使用 C 在单击按钮时运行 exe 文件 如下所示 string str C windows system32 notepad exe process StartInfo F
  • Asp.net MVC 2 缓存

    我目前正在使用 c 中的 asp net mvc 2 开发一个网站 我从未使用过 MVC 中的缓存功能 并且想将其应用到用户个人资料页面 此页面上的内容很少更改 唯一需要实时的部分是用户最近发布的帖子列表 我使用linq to sql从数据
  • 尝试写入事件日志时出错 - 无法打开源“SourceName”的日志。您可能没有写入权限

    目前 我们正在尝试将现有的经典 ASP 页面集成到记录事件日志的新方法中 我们通过调用公开为 COM 对象的 NET 程序集来实现此目的 该程序集实际记录到事件日志中 这一切都正常工作 但是当我们尝试写入事件日志时 我们收到错误 无法打开源
  • 仅仅“抛出”一次捕获有好处吗?

    与一位同事就他将大部分功能包装在 try catch 中的做法进行了 激烈辩论 但 catch 中只有一个 抛出 例如 Private sub foo try Do something catch throw And nothing els
  • 在 C++ 中调用函数有多少开销?

    许多文献都谈到使用内联函数来 避免函数调用的开销 但我还没有看到可量化的数据 函数调用的实际开销是多少 即通过内联函数我们可以实现什么样的性能提升 在大多数架构上 成本包括将所有 或部分 或没有 寄存器保存到堆栈 将函数参数推送到堆栈 或将
  • 如何从库调用方法到 C# 控制台

    我在新库中创建了一个方法 这是我的代码 namespace ClassLibrary1 public class Class1 public static bool ISprime int prime if prime lt 2 retur
  • 从枚举获取 DescriptionAttribute [重复]

    这个问题在这里已经有答案了 我有一个枚举 用于查找协调字符串值 其中一个枚举中有一个空格 因此我尝试使用描述属性来查找该值 在找到 DescriptionAttribute 后 我在转换回公共类时遇到问题 public class Addr
  • Dapper 中的自定义映射

    我正在尝试使用带有 Dapper 和多重映射的 CTE 来获取分页结果 我遇到了重复列的不便 例如 CTE 阻止我命名列 我想将以下查询映射到以下对象 而不是列名和属性之间的不匹配 Query WITH TempSites AS SELEC

随机推荐

  • 如何在ansible中配置azure模块

    正如主题中提到的 我想在ansible中配置azure模块 也在github中找到azure模块 但我不知道如何设置 请帮助我安装和配置 你需要安装sudo pip install azure 0 11 1 最新的 azure 版本 gt
  • Font Awesome 图标未显示在我使用 Bootstrap4 制作的网页上

    我正在做一个使用 Bootstrap 4 CDN 的网页我打算用FontAwesome 图标用于我的社交媒体链接 但是打开页面时我看到一些蓝色盒子而不是图标和它们是实用的 我只需要显示图标 任何帮助 将不胜感激 以下是必要的片段 1
  • 如何将 IO::Scalar 与 Image::Magick::Read() 一起使用?

    我有一张经过处理的图像GD 图像我想做进一步的操作图片 魔法 我想避免将图像写入磁盘 以便 Image Magick 可以将其读入 Image Magick 的 Read 函数将接受文件句柄作为参数 因此我尝试向其传递 IO Scalar我
  • az acr - 如果单个帐户有多个订阅,则无法找到存储库

    我在用着Azure CLI v2 0 62 我在 Azure 中的单个帐户上确实有多个订阅 S1 S2 S3 S4 我正在执行以下脚本以将动态值插入存储库 az login az acr build ParentStorage platfo
  • 根据 C# 中创建的日期搜索文件

    我有一个函数 用于读取目录并获取具有特定搜索模式的文件 有没有办法使用基于创建日期或修改日期的搜索模式 public static List
  • Android 中的地理围栏触发问题

    我正在使用 Android 设备的本机地理围栏服务 以下是实施细节 跟踪转换类型 ENTER 范围 500 米 1640 英尺 通知响应时间 500ms 添加地理围栏数量 15 20 初始触发 setInitialTrigger 未设置 设
  • 在 g-recaptcha-response 中获取 Null Google 的 reCaptcha

    我正在尝试实现 Google 的 reCaptcha v 2 0 但我在中得到 nullg recaptcha 响应由于此 reCaptcha 无法正常工作 我总是收到以下错误请单击 reCAPTCHA 框 即使我成功提交了验证码 我var
  • gnuplot 指定标签列

    我正在 gnuplot 中做一个多重绘图 我想从某些列中选择点的标签 例如 假设数据文件是 year temp label1 year humidity label2 1990 30 hot 1991 100 wet 1992 25 war
  • PHP 缓存的最佳方式

    目前 我正在尝试编写一个关于电子商务的软件 我的数据通常只是 MySQL 查询 例如语言变量结果 错误号猫 gt No category found 在 PHP 中缓存这些数据的最佳且简单的方法是什么 apc
  • 将字符串列表转换为列表列表,列表列表中的每个元素作为字符串中的每个可迭代字母。全部排成一行

    使用字符串 x 列表 x foo bar 我怎样才能在一行中完成以下操作 y for word in x y append n for n in word print y 导致 f o o b a r With list和简单的列表理解 g
  • 在回调函数中访问 $(this)

    我正在努力将prompt 更改为jPrompt 因为IE阻止prompt 运行 问题是 this 不再正常工作 因为 jPrompt 不返回值 而是使用回调函数 假设我有这样的东西 它有效 a foo click function this
  • Jupyter 笔记本并排显示两个 pandas 表

    我有两个 pandas 数据框 我想在 Jupyter 笔记本中显示它们 做类似的事情 display df1 display df2 将它们显示在另一个下面 我想在第一个数据框的右侧有第二个数据框 有类似的问题 但看起来人们对将它们合并到
  • 使用 JQuery 更改 CSS 属性

    今天我看到了一个非常简单的方法来改变font size使用 jQuery 的元素 它看起来与以下内容非常相似 这显然不起作用 但我想知道缺少什么 我记得这只是一行代码 注 我已经尝试过jQuery document body css fon
  • 我可以使用 ObjectChangeListener 监听任何对象的更改吗?

    我有一个Integer称为x 如果它发生变化 那么我想在 GUI 中更新我的表 听 x 我已经尝试过 ChangeEvent y new javax swing event ChangeEvent x 我实施javax naming eve
  • Netlogo 数组需要文字值

    该数组需要一个文字值 set chrom forage min forage rate share min share rate mating treshold print chrom 我该如何处理 我真的不明白 Netlogo 中的数组
  • DDD 和聚合事务边界

    假设我有一个名为文档的对象 它有一堆图像 音频 视频等形式的子对象 因此 我的应用程序的用户可以通过键入一些文本 添加图像 视频等来创建文档 据我了解在DDD中 文档是一个聚合体 而图像 视频总是与作为根的文档相关联 基于这种理解 我将如何
  • 处理 html 表单提交中的 UTF 字符

    我的 html 表单有一些输入文本字段 这些字段可能会获取中文 日文 欧洲字符 特殊字符 例如 等 简而言之 就是 unicode 字符 为了在服务器端 使用 php 处理这些值 我可以假设所有浏览器在提交表单时默认都以 UTF 8 格式对
  • 使用 Perl 正则表达式确定 URI 是否有效

    对于我正在开发的应用程序 我需要一个 Perl 脚本 它循环遍历大量 CSV 文件并确保每一行都包含有效的 URI 我之前已经问过一个关于解析 CSV 文件的问题 并且我已经开始使用Text CSV让我的生活变得更轻松 现在我面临确保 UR
  • 如何将 jQuery 验证与“chosen”插件一起使用?

    我有一些
  • C#:在 RichTextBox 中粘贴 RTF,但保留颜色和格式(即:粗体、下划线等)

    是否可以将文本粘贴到富文本框中 同时保留粘贴内容在富文本框中使用的字体 换句话说 我想从 Word 中复制一些已格式化的内容 即 使用字体 X 并带有下划线和蓝色的文本 然后将其粘贴到我的 RichTextBox 中 我希望粘贴的内容具有与