程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 用Visual C#操作Clipboard(1)

用Visual C#操作Clipboard(1)

編輯:關於C語言

Clipboard就是所謂的剪切板,當我們同時按動Ctrl+C鍵或者點擊菜單“拷貝”的時候,選定的對象就被存放在了剪切板中了.如果剛才選定的對象是文件,那麼在定盤符後,按動Ctrl+V鍵或者點擊菜單“粘貼”,這時選定的文件就保存到指定的磁盤上面了;如果選定的對象是圖象,那麼在打開“畫圖”之後,按動Ctrl+V鍵或者點擊菜單“粘貼”,圖象就會顯示在畫圖中了;如果是文本,那麼在打開文本編輯器後,按動Ctrl+V鍵或者點擊菜單“粘貼”,這時文本就會顯示在文本編輯器中.當然選定的對象還有許多種,這就不一一舉例了.上面這些操作其實就是剪切板幾種典型的操作.那麼這些操作如果用Visual C#來實現到底是個什麼樣子?本文就將通過一個程序來具體探討這個問題.

一.本文程序設計和運行的軟件環境

(1).微軟公司視窗2000服務器版

(2)..Net FrameWork SDK Beta 2

二.程序的主要功能以及運行界面

其實看了上面的介紹以後,我們不難得出剪切板的幾種基本的操作,即:拷貝數據到剪

切板中、把當前剪切板中的數據取出來.下面就按照這些操作來編寫一個程序.這個程序主窗體是由二個TextBox組件即TextBox1和TextBox2,和二個Button組件構成.實現的功能是當選定TextBox1的文本後,按動“拷貝指定的數據到剪切板”按鈕,拷貝數據到剪切板中,然後按動“從當前剪切板獲得數據”按鈕得到剪切板中的數據,並由TextBox2顯示出來.下面的圖象是程序運行的界面:

圖1 拷貝指定對象到剪切板中

圖2 從當前剪切板中獲得數據,並顯示出來

三.程序的設計思路以及重要步驟地解決辦法

(1).如何把指定對象拷貝到剪切板中:

在這個環節中要處理好二件問題:其一是如何判斷是否選定了TextBox1中的對象,其二是如何把選定的對象存放到剪切板中.下面就帶著這二個問題來進行分析.

I > .如何判斷TextBox1中是否選定了對象:

對於TextBox組件中有一個屬性SelectedText,這個屬性就是選定的文本,在程序中是通過判斷這個屬性值是否為“”,來判斷TextBox1中是否選定了對象的.

II > .如何把選定的對象存放到剪切板中:

要完成此功能,要使用到中的Clipboard類,Clipboard類是一個封閉的類,這決定了他無法被繼承,此類的主要功能就是存取剪切板中的數據.他有一個方法SetDataObject(),這個方法的作用就是把數據存放到剪切板中.

解決上面二個問題的代碼如下:

if (textBox1.SelectedText != "")

Clipboard.SetDataObject (textBox1.SelectedText) ;

else

textBox2.Text = "在textBox1中沒有選定的內容" ;

(2).把讀取剪切板中的數據,並顯示出來.

要實現本步驟,也需要解決好二個問題:其一,在剪切板中不僅可以存放文本,還可以存放其他類型的數據,而TextBox2能夠顯示出來的數據類型只有文本,所以為了程序有更好的穩定性,在顯示之前,要判斷當前剪切板中的數據類型是文本,其二,讀取剪切板中的數據,並顯示出來.

I > .判斷當前剪切板中的數據類型:

判斷剪切板中的數據類型,要使用到IdataObject接口,此接口的可以存放從剪切板中讀取得數據.通過IdataObject接口的方法GetDataPresent()來判斷是否為符合自己需要的數據類型.

II >.讀取剪切板中的數據,並顯示出來:

通過Clipboard類的GetDataObject()可以把當前剪切板中的數據存放到IdataObject接口中,但IdataObject接口這地數據不能直接被程序使用,必須通過IdataObject接口的GetData()獲得數據.但由於GetData()地返回值是一個Object類型變量,即參考類型變量,而TextBox1顯示的文本是實值類型變量,所以還要進行一次出箱的操作,這種操作在前面的文章已經比較詳細的介紹過了,這裡就不加敘述了.經過出箱操作後的數據就可以被TextBox1使用了.下面是解決上面二個問題的代碼:

IDataObject iData = Clipboard.GetDataObject ( ) ;
//檢測數據是否是可以使用的格式,即文本格式
if (iData.GetDataPresent (DataFormats.Text))
{
//是可以使用的格式,就在textbox2中顯示剪切板中的內容
textBox2.Text = (String) iData.GetData (DataFormats.Text) ;
}
else
{
//如果不是
textBox2.Text = "沒有從剪切板中接收到數據!" ;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved