RichTextBox粘贴两次以及去掉粘贴内容的格式问题
生活随笔
收集整理的這篇文章主要介紹了
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粘贴两次以及去掉粘贴内容的格式问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cookies的详细使用说明
- 下一篇: filebeat6.2.3收集多个日志源