<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
剪貼簿是Windows作業系統中最常用的功能之一,它用來從一個應用程式向另一個應用程式傳遞資料,可以是文字,圖象,甚至是程式物件。
不過剪貼簿也有限制,它在某個特定的時間只能指向一塊內容,每一個隨後複製的內容都會取代先前的內容。
為了在C#中操作剪貼簿(包括內容的讀取和寫入)需要使用到System.Windows.Forms.Clipboard類
主要用到Clipboard類的SetDataObject(Object obj,bool copy )方法,此方法是將目標物件放入剪貼簿中。
obj就是目標物件,
引數copy表示是否在程式結束時仍然儲存物件於剪貼簿。如果設定為false,或者不設定,將在程式執行結束後不保留剪下板內容。
Clipboard.SetDataObject(textBox1.Text);
通過以上程式碼便完成了複製操作。你可以開啟文字檔案,按下Ctrl+V 看一下效果。
C#的物件的資料結構並不能為剪下板所理解,所以你要把你自定義的資料放到剪下板去的話要把它序列化,在實際操作中,是要你提供一個“可序列化”的物件。
注意:
Main
方法使用 STAThreadAttribute 屬性進行標記。下面是個簡單的例子:
[Serializable] public class User { public int age { get; set; } public string name { get; set; } } class Program { [STAThread] static void Main(string[] args) { User userIn = new User(); userIn.name = "Jack"; userIn.age = 18; Clipboard.SetData("mydata", userIn); User userOut = (User)Clipboard.GetData("mydata"); Console.WriteLine(userOut.name +" | " + userOut.age); } }
最後要注意的一點是由於這裡的資料型別是“mydata”,你也可以指定別的名字,這種型別資料只有你自己的程式能讀懂,也就是說,你是不能開啟記事本或者Photoshop,直接把你這個User物件貼上去的。
主要用到的方法為:GetDataObject()用來檢索剪貼簿中的資料,它返回的是任何格式的資料,返回IDataObject介面,用來接收任何資料。
IDataObject iData = Clipboard.GetDataObject(); if (iData.GetDataPresent(DataFormats.Text)) { //如果剪貼簿中的資料是文字格式 this.label1.Text = (string)iData.GetData(DataFormats.Text);//檢索與指定格式相關聯的資料 } else { MessageBox.Show("目前剪貼簿中資料不可轉換為文字", "錯誤"); }
if (Clipboard.ContainsImage()) { Image img = Clipboard.GetImage(); pictureBox1.Image = img; }
或者
IDataObject iData = Clipboard.GetDataObject(); if (iData.GetDataPresent(DataFormats.Bitmap)) { this.pictureBox1.Image = (Bitmap)iData.GetData(DataFormats.Bitmap); } else { MessageBox.Show("目前剪貼簿中資料不可轉換為圖片", "錯誤"); }
另外我們可以利用某些控制元件自帶的paste方法進行貼上操作,我們這裡以richtextbox為例。[注:在使用控制元件的paste方法之前必須確保控制元件的readonly屬性為false,否則無法對控制元件進行此操作!]
現在我們就用paste方法來實現向richtextbox中加入圖片。
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("無法貼上!"); } }
到此這篇關於C#使用Clipboard類實現剪貼簿功能的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45