System.Windows.Forms.ClipboardClipboard 是密封類別,提供靜態方法存取系統剪貼簿。主要方法:
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 |
| Rtf | Rich Text Format | string |
| Html | HTML 片段 | string |
| Bitmap | 點陣圖 | System.Drawing.Bitmap |
| FileDrop | 拖放檔案清單 | string[] |
| CommaSeparatedValue | CSV 資料 | string |
SetDataObject(data, true) 保留資料於應用程式結束後Clipboard 類別非執行緒安全