概述
一、获取剪贴板数据:
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
最后
以上就是大方魔镜为你收集整理的c#操作windows剪贴板总结的全部内容,希望文章能够帮你解决c#操作windows剪贴板总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复