c#操作windows剪贴板总结

一、获取剪贴板数据:

private void button1_Click(object sender, System.EventArgs e) 
{ 
   // Create a new instance of the DataObject interface. 
   IDataObject data = Clipboard.GetDataObject(); 
   // If the data is text, then set the text of the TextBox to the text in the Clipboard. 
   if (data.GetDataPresent(DataFormats.Text)) 
      textBox1.Text = data.GetData(DataFormats.Text).ToString(); 
} 

二、将数据放到剪贴板上

private void button1_Click(object sender, System.EventArgs e) 
{ 
   Clipboard.SetDataObject(textBox1.Text); 
} 

剪贴板是Windows操作系统中最常用的功能之一,它用来从一个应用程序向另一个应用程序传递数据,可以是文本,图象,甚至是程序对象。不过剪贴板也有限制,它在某个特定的时间只能指向一块内容,每一个随后复制的内容都会取代先前的内容。为了在C#中操作剪贴板(包括内容的读取和写入)需要使用到System.Windows.Forms.Clipboard类

接下来我们就通过程序向剪贴板中存放些东西。

这里我们主要用到Clipboard类的SetDataObject(Object obj,bool copy )方法,此方法是将目标对象放入剪贴板中,obj就是目标对象,参数copy表示是否在程序结束时仍然保存对象于剪贴板。

现在我们来看网上一个简单的实例:

  private void  button2_Click(object  sender, System.EventArgs e) 
  { 
      if (this.textBox1.Text == "") 
      { 
        MessageBox.Show("Copy之前必须输入数据","错误"); 
         return; 
     } 
      else 
       Clipboard.SetDataObject(this.textBox1.Text , true); 
    } 

通过以上代码便完成了复制操作。你可以打开文本文档,按下Ctrl+V 看一下效果。

我们已经学会了如何复制,现在我们来利用程序实现粘贴操作。

粘贴操作我们主要用到的方法为:GetDataObject()用来检索剪贴板中的数据,它返回的是任何格式的数据,我们用IDataObject (它是一个接口,用来提供传送任何数据的机制)来接收。IDataObject接口实例的GetDataPresent (Type Format)方法返回bool值,用来确定实例中所存储的数据是否与所给格式相关联,或者可以相转化。另外就是DataFormats类,该类主要是用来标识格式用的。

粘贴文本的方法:

  private void  button1_Click(object  sender, System.EventArgs e) 
  { 
        IDataObject iData = Clipboard.GetDataObject(); 
       if (iData.GetDataPresent(DataFormats.Text)) 
       {//如果剪贴板中的数据是文本格式 
             this.label1.Text = ( string ) iData.GetData(DataFormats.Text);//检索与指定格式相关联的数据 
          } 
         else 
         { 
             MessageBox.Show("目前剪贴板中数据不可转换为文本","错误"); 
          } 
         } 

粘贴图片:

private void  button2_Click(object  sender, System.EventArgs e) 
 { 
         IDataObject iData = Clipboard.GetDataObject(); 
         if (iData.GetDataPresent(DataFormats.Bitmap)) 
         { 
                   this.pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; 
                   this.pictureBox1.Image = (Bitmap)iData.GetData(DataFormats.Bitmap); 
         } 
        else 
        { 
                  MessageBox.Show("目前剪贴板中数据不可转换为图片","错误"); 
        } 
  } 

另外我们可以利用某些控件自带的paste方法进行粘贴操作,我们这里以richtextbox为例。[注:在使用控件的paste方法之前必须确保控件的readonly属性为false,否则无法对控件进行此操作!]

现在我们就用paste方法来实现像richtextbox中加入图片。

private void button5_Click(object sender, EventArgs e) 
{ 
  OpenFileDialog fd = new OpenFileDialog(); 
  fd.Filter = "图片文件|*.jpg|所有文件|*.*"; 
  if (fd.ShowDialog() == DialogResult.OK) 
  { 
    Clipboard.SetDataObject(Image.FromFile(fd.FileName), true); 
    DataFormats.Format myFormat = DataFormats.GetFormat(DataFormats.Bitmap);         
    richTextBox2.ReadOnly = false; 
    if (richTextBox2.CanPaste(myFormat))//判断此控件是否可以粘贴这个格式的数据 
    { 
      richTextBox2.Paste(myFormat);           
    } 
    else 
    { 
      MessageBox.Show("无法粘贴!");                   
    } 
  } 

实现双击用户名,将用户名复制到剪贴板。
try
{
    if (dgUserKey.Columns[e.ColumnIndex].HeaderText == "用户名")
    {
        string name = dgUserKey.CurrentCell.Value.ToString();
        Clipboard.SetText(name);
        return;
    }
    MessageBox.Show("数据已复制到剪贴板","复制成功");
}
catch { }

 

Original URI: http://outofmemory.cn/code-snippet/1555/c-operation-windows-jiantieban-summary
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值