首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 操作剪貼簿完整教學:文字、圖片與資料格式判斷

     編輯:關於C語言

剪貼簿核心類別:System.Windows.Forms.Clipboard

Clipboard 是密封類別,提供靜態方法存取系統剪貼簿。主要方法:

  • SetDataObject(object):放入資料
  • GetDataObject():取得 IDataObject 介面
  • ContainsText()、ContainsImage()、ContainsFileDropList():快速檢查格式

基本文字複製與貼上

// 複製選取文字到剪貼簿
if (!string.IsNullOrEmpty(textBox1.SelectedText))
{
    Clipboard.SetDataObject(textBox1.SelectedText);
}
else
{
    MessageBox.Show("請先選取文字");
}

// 從剪貼簿取得文字並顯示
IDataObject data = Clipboard.GetDataObject();
if (data.GetDataPresent(DataFormats.Text))
{
    textBox2.Text = (string)data.GetData(DataFormats.Text);
}
else
{
    textBox2.Text = "剪貼簿無文字資料";
}

進階:支援多種資料格式

public void PasteSmart(TextBox target)
{
    IDataObject data = Clipboard.GetDataObject();
    
    if (data == null) return;

    // 優先順序:HTML > RTF > UnicodeText > Text
    if (data.GetDataPresent(DataFormats.Html))
    {
        target.Text = (string)data.GetData(DataFormats.Html);
    }
    else if (data.GetDataPresent(DataFormats.Rtf))
    {
        target.Rtf = (string)data.GetData(DataFormats.Rtf);
    }
    else if (data.GetDataPresent(DataFormats.UnicodeText))
    {
        target.Text = (string)data.GetData(DataFormats.UnicodeText);
    }
    else if (data.GetDataPresent(DataFormats.Text))
    {
        target.Text = (string)data.GetData(DataFormats.Text);
    }
    else if (data.GetDataPresent(DataFormats.FileDrop))
    {
        string[] files = (string[])data.GetData(DataFormats.FileDrop);
        target.Text = string.Join(Environment.NewLine, files);
    }
    else if (data.GetDataPresent(DataFormats.Bitmap))
    {
        // 圖片需搭配 PictureBox 顯示
        target.Text = "[剪貼簿包含圖片,無法於文字方塊顯示]";
    }
}

常見資料格式對照表

DataFormats 常數說明對應 .NET 型別
Text / UnicodeText純文字string
RtfRich Text Formatstring
HtmlHTML 片段string
Bitmap點陣圖System.Drawing.Bitmap
FileDrop拖放檔案清單string[]
CommaSeparatedValueCSV 資料string

注意事項

  1. 剪貼簿操作需在 STA 執行緒(WinForms 預設即為 STA)
  2. 大量資料複製時建議使用 SetDataObject(data, true) 保留資料於應用程式結束後
  3. 跨執行緒存取需自行同步,Clipboard 類別非執行緒安全
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved