Freigeben über


Clipboard.SetDataObject Methode

Definition

Löscht die Zwischenablage und fügt ihm dann Daten hinzu.

Überlädt

SetDataObject(Object)

Löscht die Zwischenablage und platziert dann nicht beständige Daten darin.

SetDataObject(Object, Boolean)

Löscht die Zwischenablage und platziert dann Daten darin und gibt an, ob die Daten nach Beenden der Anwendung in der Zwischenablage beibehalten werden sollen.

SetDataObject(Object, Boolean, Int32, Int32)

Löscht die Zwischenablage und versucht dann, die Daten in der angegebenen Häufigkeit und mit dem angegebenen zeitlichen Abstand zwischen den Versuchen abzulegen. Die Daten werden dabei optional nach dem Beenden der Anwendung in der Zwischenablage belassen.

SetDataObject(Object)

Löscht die Zwischenablage und platziert dann nicht beständige Daten darin.

public:
 static void SetDataObject(System::Object ^ data);
public static void SetDataObject (object data);
static member SetDataObject : obj -> unit
Public Shared Sub SetDataObject (data As Object)

Parameter

data
Object

Die in der Zwischenablage abzulegenden Daten.

Ausnahmen

Es konnten keine Daten in der Zwischenablage abgelegt 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). Fügen Sie der Main-Methode der Anwendung das STAThreadAttribute hinzu.

Der Wert von data ist null.

Beispiele

Im folgenden Codebeispiel werden SetDataObject nichtpersistente Textdaten in die Systemablage eingefügt. In der button1_Click Methode wird der markierte Text aus textBox1 der Zwischenablage kopiert und eingefügt. In der button2_Click Methode werden die Informationen aus der Zwischenablage abgerufen und in textBox2. Dieser Code setzt voraus button1, button2dass textBox1, , und textBox2 wurde erstellt und auf einem Formular platziert.

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

Daten werden aus der Systemablage gelöscht, wenn die Anwendung beendet wird.

Diese Methode versucht, die Daten zehnmal in 100-Millisekunden-Intervallen festzulegen, und löst ein ExternalException , wenn alle Versuche nicht erfolgreich sind.

Hinweis

Ein Objekt muss serialisierbar sein, damit es in der Zwischenablage platziert werden kann. Wenn Sie ein nicht serialisierbares Objekt an diese Methode übergeben, schlägt es fehl, ohne eine Ausnahme zu auslösen. Weitere Informationen zur Serialisierung finden Sie unter System.Runtime.Serialization

Die Clipboard Klasse kann nur in Threads verwendet werden, die auf den Sta-Modus (Single Thread Apartment) festgelegt sind. Um diese Klasse zu verwenden, stellen Sie sicher, dass Ihre Main Methode mit dem STAThreadAttribute Attribut gekennzeichnet ist.

Siehe auch

Gilt für

SetDataObject(Object, Boolean)

Löscht die Zwischenablage und platziert dann Daten darin und gibt an, ob die Daten nach Beenden der Anwendung in der Zwischenablage beibehalten werden sollen.

public:
 static void SetDataObject(System::Object ^ data, bool copy);
public static void SetDataObject (object data, bool copy);
static member SetDataObject : obj * bool -> unit
Public Shared Sub SetDataObject (data As Object, copy As Boolean)

Parameter

data
Object

Die in der Zwischenablage abzulegenden Daten.

copy
Boolean

true, wenn die Daten nach dem Beenden dieser Anwendung in der Zwischenablage beibehalten werden sollen, andernfalls false.

Ausnahmen

Es konnten keine Daten in der Zwischenablage abgelegt 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). Fügen Sie der Main-Methode der Anwendung das STAThreadAttribute hinzu.

Der Wert von data ist null.

Beispiele

Die folgende Methode wird in einer Anwendung ausgeführt. Es platziert eine dauerhafte Kopie der markierten Textdaten im Textfeld in der Systemablage. Dieser Code geht davon aus button1, textBox1dass er textBox2 erstellt und auf einem Formular platziert wurde.

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, true );
      }
      else
      {
         textBox2->Text = "No text selected in textBox1";
      }
   }
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, true);
    else
       textBox2.Text = "No text selected in textBox1";
 }
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, True)
    Else
        textBox2.Text = "No text selected in textBox1"
    End If
End Sub

In einer anderen Anwendung ruft die folgende Methode den Text aus der Systemablage ab und fügt den Text in textBox2. Dieser Code setzt voraus button2 , dass er textBox2 erstellt und auf einem Formular platziert wurde.

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 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 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

Wenn der copy Parameter lautet false, werden die Daten aus der Systemablage gelöscht, wenn die Anwendung beendet wird.

Diese Methode versucht, die Daten zehnmal in 100-Millisekunden-Intervallen festzulegen, und löst ein ExternalException , wenn alle Versuche nicht erfolgreich sind.

Hinweis

Ein Objekt muss serialisierbar sein, damit es in der Zwischenablage platziert werden kann. Wenn Sie ein nicht serialisierbares Objekt an diese Methode übergeben, schlägt es fehl, ohne eine Ausnahme zu auslösen. Weitere Informationen zur Serialisierung finden Sie unter System.Runtime.Serialization

Die Clipboard Klasse kann nur in Threads verwendet werden, die auf den Sta-Modus (Single Thread Apartment) festgelegt sind. Um diese Klasse zu verwenden, stellen Sie sicher, dass Ihre Main Methode mit dem STAThreadAttribute Attribut gekennzeichnet ist.

Siehe auch

Gilt für

SetDataObject(Object, Boolean, Int32, Int32)

Löscht die Zwischenablage und versucht dann, die Daten in der angegebenen Häufigkeit und mit dem angegebenen zeitlichen Abstand zwischen den Versuchen abzulegen. Die Daten werden dabei optional nach dem Beenden der Anwendung in der Zwischenablage belassen.

public:
 static void SetDataObject(System::Object ^ data, bool copy, int retryTimes, int retryDelay);
public static void SetDataObject (object data, bool copy, int retryTimes, int retryDelay);
static member SetDataObject : obj * bool * int * int -> unit
Public Shared Sub SetDataObject (data As Object, copy As Boolean, retryTimes As Integer, retryDelay As Integer)

Parameter

data
Object

Die in der Zwischenablage abzulegenden Daten.

copy
Boolean

true, wenn die Daten nach dem Beenden dieser Anwendung in der Zwischenablage beibehalten werden sollen, andernfalls false.

retryTimes
Int32

Die Häufigkeit, mit der versucht wird, die Daten in der Zwischenablage abzulegen.

retryDelay
Int32

Die Dauer in Millisekunden, die zwischen den Versuchen gewartet wird.

Ausnahmen

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

data ist null.

retryTimes ist kleiner als Null.

- oder - retryDelay ist kleiner als Null.

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

Hinweise

Das Hinzufügen von Daten zur Zwischenablage kann gelegentlich fehlschlagen, wenn die Zwischenablage mit einem anderen Thread oder einer anderen Anwendung beschäftigt ist. Diese Methode ist hilfreich, um dieses Problem in Umgebungen mit schwerer Verwendung der Zwischenablage zu umgehen.

Wenn der copy Parameter lautet false, werden die Daten aus der Systemablage gelöscht, wenn die Anwendung beendet wird.

Hinweis

Ein Objekt muss serialisierbar sein, damit es in der Zwischenablage platziert werden kann. Wenn Sie ein nicht serialisierbares Objekt an diese Methode übergeben, schlägt es fehl, ohne eine Ausnahme zu auslösen. Weitere Informationen zur Serialisierung finden Sie unter System.Runtime.Serialization

Die Clipboard Klasse kann nur in Threads verwendet werden, die auf den Sta-Modus (Single Thread Apartment) festgelegt sind. Um diese Klasse zu verwenden, stellen Sie sicher, dass Ihre Main Methode mit dem STAThreadAttribute Attribut gekennzeichnet ist.

Siehe auch

Gilt für