RichTextBox是一个支持RTF的文本框,但很多情况下我们并不希望用户采用快捷键(如CTRL+V)来粘贴有格式的内容,或者我们需要清除用户粘贴的内容的格式,怎么办呢? 其实非常简单: 去掉格式:把剪切板的字符串取出来放到一个变量中(这个过程就去掉格式了),再将变量中的值设回剪贴板,然后粘贴就ok了

private void tbClob_KeyDown(object sender, KeyEventArgs e){if (e.Control && e.KeyCode == Keys.V){IDataObject dataObj = Clipboard.GetDataObject();if (dataObj.GetDataPresent(DataFormats.StringFormat)){e.Handled = true; //去掉格式文本的格式 var txt = (string) Clipboard.GetData(DataFormats.StringFormat);Clipboard.Clear();Clipboard.SetData(DataFormats.StringFormat, txt);tbClob.Paste();}}}private void tbTemplate_KeyDown(object sender, KeyEventArgs e){//防止ctrl+v粘贴有格式的文本进来 if (e.Control && e.KeyCode == Keys.V){e.Handled = true;//这句是关键,不然你会发现粘贴了两次
                v.miPaste.PerformClick();}}private void miPaste_Click(object sender, EventArgs e){v.tbTemplate.Paste(DataFormats.GetFormat(TextDataFormat.UnicodeText.ToString()));}

网上有很多种方式(纯粹是扩展阅读,可以不看),例如自己扩展一个RichTextBox,在其中拦截WM_PASTE消息,如下:

namespace WindowsApplication2
{internal class RichTextPaste : RichTextBox{protected override void WndProc(ref Message m){base.WndProc(ref m);switch (m.Msg){case 257:if ((int) m.LParam == -1071841279 && (int) m.WParam == 17){MessageBox.Show("Fired");}break;}}}
}

有用,比较复杂,还有消息判断简单的,如:

protected override void WndProc(ref System.Windows.Forms.Message m)
{if(m.Msg== WM_PASTE)//0x302:WM_PASTE 还有一种处理手法,就是注册本应用只接收文本类的粘贴,采用:RegisterClipboardFormat,也可以
    {}
}

采用:RegisterClipboardFormat,也可以

转载于:https://www.cnblogs.com/Memory/archive/2012/07/21/2602176.html

RichTextBox粘贴两次以及去掉粘贴内容的格式问题相关推荐

  1. linux vim内容复制粘贴板,Vim 使用系统粘贴板复制粘贴

    习惯了Windows下面的复制,粘帖快捷键.转到vim编辑器会发现这两个键没什么作用,其实vim是使用ctrl+shift+c,ctrl+shift+v复制粘帖的.但是使用这些快捷键只能在一定屏幕范围 ...

  2. matlab复制txt里的一列,将txt格式里的两列数据复制粘贴导入excel 后全都在同一列里,怎样让它们分成两列?...

    将txt格式里的两列数据复制粘贴导入excel 后全都在同一列里,怎样让它们分成两列?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起 ...

  3. 怎样复制粘贴windows命令行中的内容

    windows是图形化界面和鼠标点击操作的操作系统,但类DOS的命令行(简称CMD)依然存在,它还可以方便快捷的来维护管理电脑,有时候还是必须运行环境.但在命令行下想复制/粘贴某些东西就没有我们常用的 ...

  4. PPT提示“office未获得合适的许可…”及快捷键复制一次粘贴两次问题的解决办法

    文章目录 一.提示"office未获得合适的许可-" 二.快捷键复制一次粘贴两次问题 一.提示"office未获得合适的许可-" Office 2016-201 ...

  5. (必行方案)PPT快捷键复制一次粘贴两次问题

    问题:复制的时候复制一次,粘贴的时候在Word,Excel都正常但是PPT里面不正常,只有使用PPT的时候出现粘贴两次的问题.Word和Excel中Ctrl+C后Ctrl+V粘贴一次,没有问题.PPT ...

  6. 如何用excel筛选相似内容_Excel中如何将两组数据的相同内容进行快速筛选配对...

    原标题:Excel中如何将两组数据的相同内容进行快速筛选配对 文/郭远明 在工作中,我们时常会遇到这样一种情况:原有数据需要进行更新,同时要原有的名单排序不变,新数据要与原有的名单一一对应.如果是数据 ...

  7. 如何在同一台电脑上保持两个文件夹的内容同步更新?

    很多时候我们因工作需要,想要在同一台电脑上保持两个文件夹的内容文件同步更新,保持一致.那么除了人工手动复制粘贴,还有其他方法吗?今天小西就给大家介绍一款文件同步备份软件,可实现两个文件夹文件自动同步更 ...

  8. HTML里的表格不能复制粘贴,wps表格不能复制粘贴

    有时候我们在使用WPS的时候会遇到wps不能复制粘贴,那么wps中为什么不能复制粘贴呢?遇到不能复制怎么办?学习啦小编为大家解决wps不能复制粘贴,希望能帮到大家. wps表格不能复制粘贴 你好,在W ...

  9. 计算机复制粘贴教案,《复制与粘贴》教学设计

    <复制与粘贴>教学设计<复制与粘贴>教学设计 一.教学设计说明 中小学信息技术课程的主要任务是培养学生良好的信息素养,把信术作为支持终身学习和合作学习手段.为体现这一教学目标, ...

最新文章

  1. VSS的每日自动备份
  2. 万门69节入门python_Python入门六:字符串
  3. VirtualBox的四种网络连接方式
  4. 安全的SD-WAN是如何工作?—Vecloud
  5. 学习响应式BootStrap来写融职教育网站,Bootsrtap第十三天讲师列表栏目
  6. 使用 SAP Cloud SDK 开发应用时,如何通过环境变量的配置避免硬编码
  7. ubuntu系统下Java环境JDK的安装
  8. uniapp---为什么使用uniapp_以及uniapp开发的app展示_使用hbuilderx简单搭建一个uniapp_一次开发_小程序_Android_IOS_快应用通用工作笔记002
  9. C语言之数组和指针位移的本质(四十五)
  10. sys.dm_db_wait_stats
  11. linux里没有vi编辑器怎么办,如果是linux没有vi、vim等编辑器如何操作
  12. 2018最新版省市区三级联动数据
  13. android 绘制分割线,Android 布局中分割线创建的三种方式
  14. 《如何阅读一本书》章节要点整理
  15. 【概率论与数理统计】-排列组合笔试题汇总
  16. 怎么将图片进行圆角处理?
  17. 照亮无尽前沿之路:华为正成为科技灯塔的守护者
  18. 服务器五大相关基础知识【转】
  19. 谈谈个人价值及平台红利
  20. 模拟退火(Simulated Annealing)算法 PO J1379 2420

热门文章

  1. Exchange邮件服务器实现外部邮件的收发
  2. 关于红酒的资料收集-2
  3. 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用
  4. 程序员委托事件学习随笔
  5. 孙兴慜已飞抵阿联酋 能否出战国足将视情况而定
  6. Java面试通关要点汇总集之工程篇参考答案
  7. 《MongoDB管理与开发精要》——3.2节查询语法
  8. Android上webview界面切换动画效果
  9. Nginx的https设置
  10. Python Xml类