日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/7/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RichTextBox粘贴两次以及去掉粘贴内容的格式问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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粘贴两次以及去掉粘贴内容的格式问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。