Clipboard.GetDataObject Methode

Definition

Ruft die Daten ab, die sich gegenwärtig in der Zwischenablage des Systems befinden.

public:
 static System::Windows::Forms::IDataObject ^ GetDataObject();
public static System.Windows.Forms.IDataObject GetDataObject ();
public static System.Windows.Forms.IDataObject? GetDataObject ();
static member GetDataObject : unit -> System.Windows.Forms.IDataObject
Public Shared Function GetDataObject () As IDataObject

Gibt zurück

IDataObject

Ein IDataObject, das die aktuell in der Zwischenablage vorhandenen Daten darstellt, oder null, wenn sich keine Daten in der Zwischenablage befinden.

Ausnahmen

Es konnten keine Daten aus der Zwischenablage abgerufen werden. Dies tritt i. d. R. auf, wenn die Zwischenablage von einem anderen Prozess verwendet wird.

Der aktuelle Thread befindet sich nicht im STA-Modus (Singlethread-Apartment), und der MessageLoop-Eigenschaftswert lautet true. Fügen Sie der Main-Methode der Anwendung das STAThreadAttribute hinzu.

Beispiele

Im folgenden Codebeispiel werden Methoden zum Clipboard Platzieren von Daten verwendet und aus der Systemablage abgerufen. Dieser Code wird davon ausgegangenbutton1, dass , , button2``textBox1und textBox2 auf dem Formular platziert wurden.

Die button1_Click Methode ruft SetDataObject den ausgewählten Text aus dem Textfeld auf und platzieren sie in der Systemablage.

Die button2_Click Methode ruft GetDataObject Daten aus der Systemablage ab. Der Code verwendet IDataObject und DataFormats extrahiert die zurückgegebenen Daten. Die Daten werden in textBox2angezeigt.

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

Hinweise

Da der Datentyp des vom Zwischenablage zurückgegebenen Objekts variieren kann, gibt diese Methode die Daten in einer IDataObject. Anschließend können Sie Methoden der IDataObject Schnittstelle verwenden, um die Daten in ihrem richtigen Datentyp zu extrahieren.

Diese Methode versucht, die Daten zehn mal in 100-Millisekundenintervallen abzurufen und eine ExternalException wenn alle Versuche nicht erfolgreich sind.

Hinweis

Die Clipboard Klasse kann nur im Thread-Modus (Single Thread Apartment, STA) verwendet werden. Um diese Klasse zu verwenden, stellen Sie sicher, dass Ihre Main Methode mit dem STAThreadAttribute Attribut gekennzeichnet ist.

Gilt für

Siehe auch