Clipboard 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供将数据置于系统剪贴板中以及从中检索数据的方法。 此类不能被继承。
public ref class Clipboard sealed
public ref class Clipboard abstract sealed
public sealed class Clipboard
public static class Clipboard
type Clipboard = class
Public NotInheritable Class Clipboard
Public Class Clipboard
- 继承
-
Clipboard
示例
下面的代码示例使用 Clipboard 方法将数据放置在 上,并从系统剪贴板中检索数据。 此代码假定 button1
button2
、、 textBox1
和 textBox2
已创建并放置在窗体上。
方法 button1_Click
调用 SetDataObject 以从文本框中获取所选文本并将其放置在系统剪贴板上。
方法 button2_Click
调用 GetDataObject 以从系统剪贴板检索数据。 代码使用 IDataObject 和 DataFormats 提取返回的数据并在 中 textBox2
显示数据。
private:
void button1_Click( Object^ /*sender*/, System::EventArgs^ /*e*/ )
{
// Takes the selected text from a text box and puts it on the clipboard.
if ( !textBox1->SelectedText->Equals( "" ) )
{
Clipboard::SetDataObject( textBox1->SelectedText );
}
else
{
textBox2->Text = "No text selected in textBox1";
}
}
void button2_Click( Object^ /*sender*/, System::EventArgs^ /*e*/ )
{
// Declares an IDataObject to hold the data returned from the clipboard.
// Retrieves the data from the clipboard.
IDataObject^ iData = Clipboard::GetDataObject();
// Determines whether the data is in a format you can use.
if ( iData->GetDataPresent( DataFormats::Text ) )
{
// Yes it is, so display it in a text box.
textBox2->Text = (String^)(iData->GetData( DataFormats::Text ));
}
else
{
// No it is not.
textBox2->Text = "Could not retrieve data off the clipboard.";
}
}
private void button1_Click(object sender, System.EventArgs e) {
// Takes the selected text from a text box and puts it on the clipboard.
if(textBox1.SelectedText != "")
Clipboard.SetDataObject(textBox1.SelectedText);
else
textBox2.Text = "No text selected in textBox1";
}
private void button2_Click(object sender, System.EventArgs e) {
// Declares an IDataObject to hold the data returned from the clipboard.
// Retrieves the data from the clipboard.
IDataObject iData = Clipboard.GetDataObject();
// Determines whether the data is in a format you can use.
if(iData.GetDataPresent(DataFormats.Text)) {
// Yes it is, so display it in a text box.
textBox2.Text = (String)iData.GetData(DataFormats.Text);
}
else {
// No it is not.
textBox2.Text = "Could not retrieve data off the clipboard.";
}
}
Private Sub button1_Click(sender As Object, e As System.EventArgs)
' Takes the selected text from a text box and puts it on the clipboard.
If textBox1.SelectedText <> "" Then
Clipboard.SetDataObject(textBox1.SelectedText)
Else
textBox2.Text = "No text selected in textBox1"
End If
End Sub
Private Sub button2_Click(sender As Object, e As System.EventArgs)
' Declares an IDataObject to hold the data returned from the clipboard.
' Retrieves the data from the clipboard.
Dim iData As IDataObject = Clipboard.GetDataObject()
' Determines whether the data is in a format you can use.
If iData.GetDataPresent(DataFormats.Text) Then
' Yes it is, so display it in a text box.
textBox2.Text = CType(iData.GetData(DataFormats.Text), String)
Else
' No it is not.
textBox2.Text = "Could not retrieve data off the clipboard."
End If
End Sub
注解
有关要与 类一起使用 Clipboard 的预定义格式的列表,请参阅 DataFormats 类。
调用 SetDataObject 以将数据放在剪贴板上,替换其当前内容。 若要在剪贴板上放置数据的持久副本,请将 copy
参数设置为 true
。
注意
若要将数据以多种格式放置在剪贴板上,请使用 DataObject 类或 IDataObject 实现。 将数据以多种格式放置在剪贴板上,以最大程度地提高目标应用程序(你可能不知道其格式要求)可以成功检索数据的可能性。
调用 GetDataObject 以从剪贴板检索数据。 数据作为实现 IDataObject 接口的对象返回。 使用 中DataFormats由 IDataObject 和 字段指定的方法从 对象中提取数据。 如果不知道检索到的数据的格式,请调用 GetFormats 接口的 IDataObject 方法来获取存储数据的所有格式的列表。 然后调用 GetData 接口的 IDataObject 方法,并指定应用程序可以使用的格式。
在 .NET Framework 2.0 中Clipboard, 类提供了其他方法,以便更轻松地使用系统剪贴板。
Clear调用 方法以从剪贴板中删除所有数据。 若要将特定格式的数据添加到剪贴板,请替换现有数据,调用相应的 Set
Format 方法(如 SetText),或调用 SetData 方法来指定格式。 若要从剪贴板检索特定格式的数据,请首先调用相应的 Contains
Format 方法 ((如 ContainsText) 方法)来确定剪贴板是否包含该格式的数据,然后调用相应的 Get
Format 方法 ((如 GetText) )以检索剪贴板包含的数据。 若要在这些操作中指定格式,请改为调用 ContainsData 和 GetData 方法。
注意
所有基于 Windows 的应用程序共享系统剪贴板,因此当你切换到另一个应用程序时,内容可能会更改。
对象必须可序列化,才能将其放在剪贴板中。 如果将不可序列化的对象传递给 Clipboard 方法,该方法将失败,并且不会引发异常。 有关序列化的详细信息,请参阅 System.Runtime.Serialization 。 如果目标应用程序需要非常具体的数据格式,则序列化过程中添加到数据中的标头可能会阻止应用程序识别数据。 若要保留数据格式,请将数据作为 Byte 数组添加到 , MemoryStream 并将 传递给 MemoryStreamSetData 方法。
Clipboard 类只能在设置为单线程单元 (STA) 模式的线程中使用。 若要使用此类,请确保使用 Main
特性标记 STAThreadAttribute 方法。
在剪贴板中使用图元文件格式时,可能需要特殊注意事项。 由于 类的当前实现DataObject存在限制,使用较旧图元文件格式的应用程序可能无法识别.NET Framework使用的图元文件格式。 在这种情况下,必须与 Win32 剪贴板应用程序编程接口 (API) 进行互操作。