五. 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"文件中!" ) ; |