前言
在做winform項目的時候有時候會用到復制粘貼,在.net中提供了Clipboard類來操作剪切板,我們來看下。
clipbrd.exe
clipbrd是系統剪切板程序,但是在vista及以上程序不提供,我們需要網上下載一個并復制到System32目錄下。
直接在運行里面敲入”clipbrd“命令就可以打開clipbrd剪切板程序。
可以直接復制一些文字,clipbrd程序會實時的顯示出來。
Clipboard類
關于Clipboard類文本復制粘貼主要使用方法:Clipboard.SetText、Clipboard.ContainsText和Clipboard.GetText,分別是設置文本、判斷文本存在和獲取文本。我們看個示例:
1 /// <summary> 2 /// 復制 3 /// </summary> 4 /// <param name="sender"></param> 5 /// <param name="e"></param> 6 private void button1_Click(object sender, EventArgs e) 7 { 8 if (!textBox1.SelectedText.Equals("")) 9 Clipboard.SetText(textBox1.SelectedText); 10 else 11 MessageBox.Show("未選中文本!"); 12 } 13 14 /// <summary> 15 /// 粘貼 16 /// </summary> 17 /// <param name="sender"></param> 18 /// <param name="e"></param> 19 private void button2_Click(object sender, EventArgs e) 20 { 21 if (Clipboard.ContainsText()) 22 textBox2.Text = Clipboard.GetText(); 23 else 24 MessageBox.Show("剪切板沒有文本!"); 25 }
運行結果:
上面說的是剪切板的文本復制,Clipboard類也支持圖片復制粘貼,提供的靜態方法是:Clipboard.SetImage、Clipboard.ContainsImage和Clipboard.GetImage,圖片復制粘貼的使用方法和文本復制粘貼一樣,參考上面的代碼就行。GetImage方法返回的是Image對象。
拖放復制
平常我們復制粘貼都是Ctrl+C/Ctrl+V,但是這種操作會比較繁瑣,我們想利用鼠標就可以快速的復制粘貼,這種在winform中是可以實現的,我們看下示例:
1 private void lvSource_ItemDrag(object sender, ItemDragEventArgs e) 2 { 3 lvSource.DoDragDrop(e.Item, DragDropEffects.Copy); 4 } 5 6 private void txtMessage_DragEnter(object sender, DragEventArgs e) 7 { 8 e.Effect = DragDropEffects.Copy; 9 } 10 11 private void txtMessage_DragDrop(object sender, DragEventArgs e) 12 { 13 ListViewItem lvi = (ListViewItem)e.Data.GetData(typeof(ListViewItem)); 14 txtMessage.Text = lvi.Text; 15 16 lvSource.Items.Remove(lvi); 17 }
我們做的示例是拖放ListView中的項復制到TextBox中,lvSource_ItemDrag事件在拖放項時發生,lvSource.DoDragDrop(e.Item, DragDropEffects.Copy);這句代碼的意思是開始拖放操作:傳遞數據(要復制的值)和設置拖放操作效果。DragDropEffects是枚舉類型:
成員名稱 | 說明 |
---|---|
All | Copy 、Move 和 Scroll 效果的組合。 |
Copy | 將拖動源中的數據復制到放置目標。 |
Link | 將拖動源中的數據鏈接到放置目標。 |
Move | 將拖動源的數據移動到放置目標。 |
None | 放置目標不接受該數據。 |
Scroll | 拖動時可以滾動目標,以定位在目標中當前不可見的某個放置位置。 |
txtMessage_DragEnter作用就是設置目標的放置效果,如果注釋掉事件里面的代碼,就會出現下面這種情況,并且值沒有復制。
txtMessage_DragDrop事件是拖放完成做的操作,從代碼中我們可以看出,獲取拖放的值并不是從剪切板中取的,而是通過參數傳遞,也就是一開始lvSource.DoDragDrop(e.Item, DragDropEffects.Copy);在做拖放的時候,我們看下clipbrd.exe程序里并沒有拖放的值。
運行結果:
程序下載:剪切板和拖放復制.rar
文章列表