RichTextBox粘贴两次以及去掉粘贴内容的格式问题
2012-07-21 12:13
302 查看
RichTextBox是一个支持RTF的文本框,但很多情况下我们并不希望用户采用快捷键(如CTRL+V)来粘贴有格式的内容,或者我们需要清除用户粘贴的内容的格式,怎么办呢? 其实非常简单: 去掉格式:把剪切板的字符串取出来放到一个变量中(这个过程就去掉格式了),再将变量中的值设回剪贴板,然后粘贴就ok了
网上有很多种方式(纯粹是扩展阅读,可以不看),例如自己扩展一个RichTextBox,在其中拦截WM_PASTE消息,如下:
有用,比较复杂,还有消息判断简单的,如:
采用:RegisterClipboardFormat,也可以
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,也可以
相关文章推荐
- iOS开发问题----去掉输入键盘上的自动联想部分,限制长度内容,以及禁止输入emoji表情等问题
- RichTextBox复制一段带格式的Excel的文本内容,粘贴后一定长度后没有\t(制表符)的处理方式
- 从Word文档粘贴内容至Web编辑器的问题
- listcontrol不能显示列名以及不能显示后续列内容的问题
- caffe上使用hdf5格式文件以及回归(regression)问题
- android设置软键盘搜索键以及监听搜索键点击时发生两次事件的问题解决
- Android 去掉ListView/GridView下拉出空白回弹的效果,以及使用PullToRefresh出现的问题
- java的数据转换以及程序格式应注意的问题
- 粘贴到vi/vim的代码,怎样避免向右不断缩进,保持原来的格式?解决vi/vim在粘贴中会在行首多很多缩进和空格的问题。
- iOS 浮点数去掉小数点之后的0.00以及价格格式显示
- iText C# 合并PDF文件流,以及A5变A4时内容默认放在最底下的问题的解决方法
- 守护进程以及fork两次的问题
- 记录cell自适应,以及cell内容动态添加问题.
- popupWindow焦点问题以及实现根据输入内容筛选列表功能
- shareSDK分享平台分享内容出去显示“来自XXX”的问题及其如何修改分享菜单的背景图片以及调用无UI方法自定义UI分享
- 如何将文章带格式的存入数据库,并带格式的输出以及数据库经常插入空行问题
- TIF转PDF格式以及相关压缩ZIP包(详细内容看代码)
- richtextbox的格式问题(居中等)
- 13.02.04 C# Linq 添加、修改 带有richTextBox格式的内容到数据库
- android修改软键盘的回车键为搜索键以及点击时执行两次监听事件的问题