系統剪切板是應用程序間數據交換的核心通道。本文通過一個 WinForms 範例,演示如何將 TextBox 選中文本寫入剪切板,並從剪切板讀取文本顯示,核心涉及 Clipboard.SetDataObject、Clipboard.GetDataObject、IDataObject.GetDataPresent、IDataObject.GetData。
private void btnCopy_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(textBox1.SelectedText))
Clipboard.SetDataObject(textBox1.SelectedText);
else
textBox2.Text = "未選中任何內容";
}
private void btnPaste_Click(object sender, EventArgs e)
{
IDataObject data = Clipboard.GetDataObject();
if (data.GetDataPresent(DataFormats.Text))
textBox2.Text = (string)data.GetData(DataFormats.Text);
else
textBox2.Text = "剪切板無文本數據";
}
GetData 返回 object,需強制轉換為目標類型(如 string、Image、string[] 文件路徑數組)。try-catch 中並重試。// 寫入圖片
Clipboard.SetDataObject(pictureBox1.Image);
// 讀取圖片
if (data.GetDataPresent(DataFormats.Bitmap))
pictureBox2.Image = (Image)data.GetData(DataFormats.Bitmap);
// 寫入文件列表
string[] files = { @"C:\a.txt", @"C:\b.doc" };
Clipboard.SetFileDropList(new StringCollection(files));
// 讀取文件列表
if (data.GetDataPresent(DataFormats.FileDrop))
string[] paths = (string[])data.GetData(DataFormats.FileDrop);
標準 WinForms 程序:Main() 啟動 Form1,包含兩個 TextBox、兩個 Button、事件綁定、資源釋放。