通過上面的介紹,我們不難理解下面這些程序代碼,這些程序代碼的功能就是判定當前剪切板中的數據是什麼類型。具體如下:
using System ;
using System.Windows.Forms ;
public class MyClipboard
{
public static void Main ( string [ ] args )
{
IDataObject d = Clipboard.GetDataObject ( ) ;
if ( d.GetDataPresent ( DataFormats.Bitmap ) ) {
Console.WriteLine ( "當前剪切板中的數據類型是位圖!" ) ;
} else if ( d.GetDataPresent ( DataFormats.Text ) ) {
Console.WriteLine ( "當前剪切板中的數據類型是文本!" ) ;
} else if ( d.GetDataPresent ( DataFormats.Html ) ) {
Console.WriteLine ( "當前剪切板中的數據類型是超文本!" ) ;
} else {
Console.WriteLine ( "當前剪切板中的數據類型是其他類型數據!" ) ;
}
}
}
五.Visual C#保存剪切板數據的解決思路以及重要步驟的解決辦法:
用Visual C#保存剪切板中的數據要使用的類和接口和判定剪切板中的數據類型基本一樣。但由於要讀取剪切板數據,就需要用到了IdataObject接口的方法GetData ( ),這個方法的作用就是獲得指定類型的數據內容。他的語法為:
object GetData ( Type ) ;
我們注意到這個方法返回的類型是一個Object類型,這是一個參考類型,他的變量就是一個參考類型變量,而我們讀取的內容應該是一個實值類型變量,這就又涉及到裝箱和出箱的問題了。由於在前面的文章中已經比較詳細的說明了這二者的關系(見《用Visual C#動態生成組件》),所以在本文就不介紹了。在本文的程序中是通過下列二行語句來實現這種由參考類型變量轉換成實值類型變量的過程:
Bitmap b = ( Bitmap ) d.GetData ( DataFormats.Bitmap ) ;//位圖
String c = ( String ) d.GetData ( DataFormats.Text ) ;//文本
實現保存剪切板中數據的程序的設計思路是,首先判定當前剪切板中的數據類型,如果數據類型為位圖,則保存到C盤的"my.bmp"文件中,如果數據類型是文本,則用一個RichText組件顯示出來。否則則提示是其他類型數據。下圖就是程序實現上述功能的截圖:
圖01:數據類型為位圖的時候,程序運行界面
圖02:數據類型為文本時程序運行界面
如何判定剪切板數據類型在上面已經介紹過了,程序的另外一個難點就是,假定已經判定剪切板中的數據類型為位圖,如何保存數據。在程序中是通過名稱空間System.Windows.Forms中的Bitmap類的Save ( )方法來實現的。下列語句就是具體的實現方法。
Bitmap b = ( Bitmap ) d.GetData ( DataFormats.Bitmap ) ;
b.Save ( @"c:\my.bmp" ) ;
MessageBox.Show ( "當前剪切板內容是位圖,已經保存到"MY.BMP"文件中!" ) ;