Clipboard 类

定义

提供将数据置于系统剪贴板中以及从中检索数据的方法。 此类不能被继承。

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 方法将数据放置在 上,并从系统剪贴板中检索数据。 此代码假定 button1button2、、 textBox1textBox2 已创建并放置在窗体上。

方法 button1_Click 调用 SetDataObject 以从文本框中获取所选文本并将其放置在系统剪贴板上。

方法 button2_Click 调用 GetDataObject 以从系统剪贴板检索数据。 代码使用 IDataObjectDataFormats 提取返回的数据并在 中 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 接口的对象返回。 使用 中DataFormatsIDataObject 和 字段指定的方法从 对象中提取数据。 如果不知道检索到的数据的格式,请调用 GetFormats 接口的 IDataObject 方法来获取存储数据的所有格式的列表。 然后调用 GetData 接口的 IDataObject 方法,并指定应用程序可以使用的格式。

在 .NET Framework 2.0 中Clipboard, 类提供了其他方法,以便更轻松地使用系统剪贴板。 Clear调用 方法以从剪贴板中删除所有数据。 若要将特定格式的数据添加到剪贴板,请替换现有数据,调用相应的 SetFormat 方法(如 SetText),或调用 SetData 方法来指定格式。 若要从剪贴板检索特定格式的数据,请首先调用相应的 ContainsFormat 方法 ((如 ContainsText) 方法)来确定剪贴板是否包含该格式的数据,然后调用相应的 GetFormat 方法 ((如 GetText) )以检索剪贴板包含的数据。 若要在这些操作中指定格式,请改为调用 ContainsDataGetData 方法。

注意

所有基于 Windows 的应用程序共享系统剪贴板,因此当你切换到另一个应用程序时,内容可能会更改。

对象必须可序列化,才能将其放在剪贴板中。 如果将不可序列化的对象传递给 Clipboard 方法,该方法将失败,并且不会引发异常。 有关序列化的详细信息,请参阅 System.Runtime.Serialization 。 如果目标应用程序需要非常具体的数据格式,则序列化过程中添加到数据中的标头可能会阻止应用程序识别数据。 若要保留数据格式,请将数据作为 Byte 数组添加到 , MemoryStream 并将 传递给 MemoryStreamSetData 方法。

Clipboard 类只能在设置为单线程单元 (STA) 模式的线程中使用。 若要使用此类,请确保使用 Main 特性标记 STAThreadAttribute 方法。

在剪贴板中使用图元文件格式时,可能需要特殊注意事项。 由于 类的当前实现DataObject存在限制,使用较旧图元文件格式的应用程序可能无法识别.NET Framework使用的图元文件格式。 在这种情况下,必须与 Win32 剪贴板应用程序编程接口 (API) 进行互操作。

方法

Clear()

从剪贴板中移除所有数据。

ContainsAudio()

指示在剪贴板中是否存在 WaveAudio 格式的数据。

ContainsData(String)

指示剪贴板中是否存在指定格式的数据,或可转换成此格式的数据。

ContainsFileDropList()

指示剪贴板中是否存在 FileDrop 格式或可转换成此格式的数据。

ContainsImage()

指示剪贴板中是否存在 Bitmap 格式或可转换成此格式的数据。

ContainsText()

指示剪贴板中是否存在 TextUnicodeText 格式的数据(取决于操作系统)。

ContainsText(TextDataFormat)

指示剪贴板中是否存在具有指定的 TextDataFormat 值所指示的格式的文本数据。

GetAudioStream()

检索剪贴板上的音频流。

GetData(String)

从剪贴板中检索指定格式的数据。

GetDataObject()

检索当前位于系统剪贴板中的数据。

GetFileDropList()

从剪贴板中检索文件名的集合。

GetImage()

检索剪贴板上的图像。

GetText()

从剪贴板中检索 TextUnicodeText 格式的文本数据(取决于操作系统)。

GetText(TextDataFormat)

从剪贴板中检索由指定的 TextDataFormat 值表示的格式的文本数据。

SetAudio(Byte[])

清除剪贴板然后以 Byte 格式添加 WaveAudio 数组,这种情况发生在将其转换为 Stream 之后。

SetAudio(Stream)

清除剪贴板然后以 Stream 格式添加 WaveAudio

SetData(String, Object)

清除剪贴板然后以所指定的格式添加数据。

SetDataObject(Object)

清除剪贴板然后,然后将非持久性数据置于其中。

SetDataObject(Object, Boolean)

清除剪贴板并将数据置于系统剪贴板中,且指定在退出应用程序后是否将数据保留在剪贴板中。

SetDataObject(Object, Boolean, Int32, Int32)

清除剪贴板并尝试指定的次数,以将数据置于系统剪贴板中,且两次尝试之间具有指定的延迟,可以选择在退出应用程序后将数据保留在剪贴板中。

SetFileDropList(StringCollection)

清除剪贴板,然后添加 FileDrop 格式中的文件名集合。

SetImage(Image)

清除剪贴板然后以 Image 格式添加 Bitmap

SetText(String)

清除剪贴板然后,然后以 TextUnicodeText 格式添加文本数据,这取决于操作系统。

SetText(String, TextDataFormat)

除剪贴板然后,然后以所指定 TextDataFormat 值指示的格式添加文本数据。

适用于

另请参阅