Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > .NET > C#.NET > Visual C#的剪切板编程
【标  题】:Visual C#的剪切板编程
【关键字】:C,编程,Visual,is,Visual
【来  源】:网络

Visual C#的剪切板编程

Your Ad Here IDataObject d = Clipboard.GetDataObject ( ) ;
   (2).判定当前剪切板中的数据类型:

   在IdataObject接口中有一个方法名称是GetDataPresent ( ),这个方法的作用是检测存放在接口的数据是否是指定的数据类型或者可以转换成指定的数据类型。他的返回值是布尔型,True表示为指定的数据类型或者可以转换成指定的数据类型。False于上面意思相反。下面语句实现的功能是判定当前剪切板的数据内容是否为位图、文本和超文本的,具体如下:

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 ( "当前剪切板中的数据类型是其他类型数据!" ) ;
}

四. 程序源代码:

   通过上面的介绍,我们不难理解下面这些程序代码,这些程序代码的功能就是判定当前剪切板中的数据是什么类型。具体如下:

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

六. 用Visual C#读取当前剪切板中数据内容并保存的程序源代码:

   通过上面的介绍,可以得到实现上述功能的源程序代码,如下:

using System ;
using System.Drawing ;
using System.Collections ;
using System.ComponentModel ;
using System.Windows.Forms ;
using System.Data;
public class Form1 : Form
{
private RichTextBox richTextBox1 ;
private Button button1 ;
private System.ComponentModel.Container components = null ;
public Form1()
{
//初始化窗体中的各个组件
InitializeComponent ( ) ;
}
//清除程序中使用过的资源
protected override void Dispose ( bool disposing )
{
if ( disposing )
{
if ( components != null )
{
components.Dispose ( ) ;
}
}
base.Dispose ( disposing );
}
private void InitializeComponent ( )
{
this.richTextBox1 = new RichTextBox ( ) ;
this.button1 = new Button ( ) ;
this.SuspendLayout ( ) ;

this.richTextBox1.Location = new System.Drawing.Point ( 40 , 16 ) ;
this.richTextBox1.Name = "richTextBox1" ;
this.richTextBox1.Size = new System.Drawing.Size ( 336 , 264 ) ;
this.richTextBox1.TabIndex = 0 ;
this.richTextBox1.Text = "" ;

this.button1.Location = new System.Drawing.Point ( 128 , 304 ) ;
this.button1.Name = "button1" ;
this.button1.Size = new System.Drawing.Size ( 128 , 24 ) ;
this.button1.TabIndex = 1 ;
this.button1.Text = "获得剪切板中的数据" ;
this.button1.Click += new System.EventHandler ( this.button1_Click ) ;

this.AutoScaleBaseSize = new System.Drawing.Size ( 6 , 14 ) ;
this.ClientSize = new System.Drawing.Size ( 408 , 357 ) ;
this.Controls.Add ( button1 );
this.Controls.Add ( richTextBox1 );
this.Name = "Form1";
this.Text = "用Visual C#来保存剪切板中的数据!";
this.ResumeLayout(false);

}
static void Main ( )
{
Application.Run ( new Form1 ( ) ) ;
}
private void button1_Click ( object sender , System.EventArgs e )
{ //定义一个IDataObject接口
IDataObject d = Clipboard.GetDataObject ( ) ;
//如果剪切板中数据是位图,则另存为C盘的my.bmp文件
if ( d.GetDataPresent ( DataFormats.Bitmap ) )
{
//出箱
Bitmap b = ( Bitmap ) d.GetData ( DataFormats.Bitmap ) ;
b.Save ( @"c:\my.bmp" ) ;
MessageBox.Show ( "当前剪切板内容是位图,已经保存到"MY.BMP"文件中!" ) ;
} //如果是文本,则用窗体中的RichText组件显示文本内容。
else if ( d.GetDataPresent ( DataFormats.Text ) )
{
//出箱
String c = ( String ) d.GetData ( DataFormats.Text ) ;
richTextBox1.Text = c ;
}
else
{
MessageBox.Show ( "剪切板中是其他类型的数据!" ) ;
}
}
}

七. 总结:

   本文介绍了在用Visual C#进行剪切板编程的二个重要方面的内容,即:判定剪切板中的数据和保存剪切板中的数据。其实针对剪切板的编程用途是比较广的,譬如有了上面的知识做铺垫,我想如果要你用Visual C#开发一个抓图程序,你一定不会说很难吧!
C语言函数大全(f开头):【上一篇】
C语言函数大全(e开头):【下一篇】
【相关文章】
  • C语言函数大全(f开头)
  • 用Visual C#来获得计算机的分辨率
  • C语言函数大全(g开头)
  • C#中调用API
  • 全面掌握VisualC#实现UDP协议(二)
  • 使用C#轻松编写.Net组件
  • 用C#创建COM对象
  • 用Visual C#实现POP3邮件接收程序
  • 用C#实现Web服务器
  • C/C++中字符指针数组及指向指针的指针的含义
  • 【随机文章】
  • SCDMA综合宽带接入
  • 如何将unicode转换成中文
  • Linux C开发环境的构成和安装
  • VBScript 语句
  • 如何获取当前程序文件的路径 Current Path
  • asp存储过程使用大全 [收集]
  • JiBX初步
  • 周思博的语言战
  • 体验三大网络安全在线检测服务
  • 取得服务器上用户组列表的脚本之asp版.(匿名用户权限即可完成)
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.