文章出處

前言

  在做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 、MoveScroll 效果的組合。
Copy 將拖動源中的數據復制到放置目標。
Link 將拖動源中的數據鏈接到放置目標。
Move 將拖動源的數據移動到放置目標。
None 放置目標不接受該數據。
Scroll 拖動時可以滾動目標,以定位在目標中當前不可見的某個放置位置。

  txtMessage_DragEnter作用就是設置目標的放置效果,如果注釋掉事件里面的代碼,就會出現下面這種情況,并且值沒有復制。

  txtMessage_DragDrop事件是拖放完成做的操作,從代碼中我們可以看出,獲取拖放的值并不是從剪切板中取的,而是通過參數傳遞,也就是一開始lvSource.DoDragDrop(e.Item, DragDropEffects.Copy);在做拖放的時候,我們看下clipbrd.exe程序里并沒有拖放的值。

  運行結果:

 

  程序下載:剪切板和拖放復制.rar

  附錄:小菜學習編程-Winform系列(初學者)

 


文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()