[轉貼]C#中作業系統剪貼簿

來源:互聯網
上載者:User
C#中作業系統剪貼簿

剪貼簿是Windows作業系統中最常用的功能之一,它用來從一個應用程式向另一個應用程式傳遞資料,可以是文本,圖象,甚至是程式對象。不過剪貼簿也有限制,它在某個特定的時間只能指向一塊內容,每一個隨後複製的內容都會取代先前的內容。為了在C#中操作剪貼簿(包括內容的讀取和寫入)需要使用到System.Windows.Forms.Clipboard類,下面我們就先以一個例子來說明怎樣向剪貼簿中寫入資料,在寫程式前先看一下運行效果:

如所示,你可以在文字框中輸入一些文本然後點擊複製按紐,這時程式就將文字框中的資料寫到剪貼簿中去了,接著開啟記事本按下Ctrl+V鍵,是不是看到剛剛在文字框中輸入的資料出現在記事本當中呢!實現代碼如下:
private void button1_Click(object sender, System.EventArgs e)
{
    // 退出按紐
   Close();
}
// 複製按紐
private void button2_Click(object sender, System.EventArgs e)
{
   if (this.textBox1.Text == "")
   {
    MessageBox.Show("Copy之前必須輸入資料","錯誤");
    return;
   }
   else
    // SetDataObject(Object obj,bool copy)方法將資料放置在剪貼簿上
    // 參數obj指要放置的資料對象
    // 參數copy指當程式退出時資料是否仍然儲存在剪貼簿上
    Clipboard.SetDataObject(this.textBox1.Text,true);
  }
以上程式說明如何向剪貼簿中寫入資料,接下來我們看看如何在程式中讀取剪貼簿中的內容,照樣我們來看看程式的運行效果:

程式組件:
建立一個Windows程式,在表單上放置3個Button和1個Label和1個PictureBox。

程式操作:
1.在某處複製一小段文字,然後回到程式中點擊“顯示剪貼簿中的文本”按紐,這時你剛才複製的那段文本就會出現在表單的Label中
2.開啟一個網頁隨便在一副圖片上單擊右鍵選擇儲存,然後回到程式中點擊“顯示剪貼簿中的圖片”按紐,這時你剛才複製的那張圖片就會出現在表單的PictureBox中

程式使用的一些類或方法:
IDataObject介面,為資料提供與格式無關的機制,也就是說使用該對象可以儲存的資料不受格式的限制,因為我們預先並不知道剪貼簿中的資料是什麼格式的

使用Clipboard類的GetDataObject()方法得到剪貼簿中的資料,該方法返回一個IDataObject

使用IDataObject對象的GetDataPresent(System.Type format)判斷IDataObject對象中儲存的資料是否可以轉換為指定的格式,該方法接收一個參數該參數必須是系統預定義的一種格式類型,該方法返回bool值

最後使用IDataObject對象的GetData(System.Type format)方法得到資料內容,該方法返回Object使用前要進行類型轉換
具體代碼如下:
private void button1_Click(object sender, System.EventArgs e)
{
   // GetDataObject檢索當前剪貼簿上的資料
   IDataObject iData = Clipboard.GetDataObject();
   
   // 將資料與指定的格式進行匹配,返回bool
   if (iData.GetDataPresent(DataFormats.Text))
   {
    // GetData檢索資料並指定一個格式
    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("目前剪貼簿中資料不可轉換為圖片","錯誤");
   }
}

 private void button3_Click(object sender, System.EventArgs e)
{
   Close();
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.