Clipboard.SetDataObject Methode

Definition

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

Überlädt

Name Beschreibung
SetDataObject(Object)

Löscht die Zwischenablage und platziert dann nicht konsistenzfreie Daten darauf.

SetDataObject(Object, Boolean)

Löscht die Zwischenablage und platziert dann Daten darauf und gibt an, ob die Daten nach dem Beenden der Anwendung verbleiben sollen.

SetDataObject(Object, Boolean, Int32, Int32)

Löscht die Zwischenablage, und versucht dann, Daten darin die angegebene Anzahl von Malen und mit der angegebenen Verzögerung zwischen versuchen, optional die Daten in der Zwischenablage nach dem Beenden der Anwendung zu speichern.

SetDataObject(Object)

Löscht die Zwischenablage und platziert dann nicht konsistenzfreie Daten darauf.

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 Daten, die in der Zwischenablage platziert werden sollen.

Ausnahmen

Daten konnten nicht in die Zwischenablage eingefügt werden. Dies tritt in der Regel auf, wenn die Zwischenablage von einem anderen Prozess verwendet wird.

Der aktuelle Thread befindet sich nicht im Sta-Modus (Single Threaded Apartment). Fügen Sie die STAThreadAttribute Methode Ihrer Anwendung Main 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 textBox2angezeigt. Dieser Code setzt voraus, dass button1, button2, textBox1und textBox2 es 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 beim Beenden der Anwendung aus der Systemablage gelöscht.

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

Note

Ein Objekt muss serialisierbar sein, damit es in der Zwischenablage abgelegt werden kann. Wenn Sie ein nicht serialisierbares Objekt an diese Methode übergeben, tritt ein Fehler auf, ohne eine Ausnahme auszuwerfen. Weitere Informationen zur Serialisierung finden Sie unter.See System.Runtime.Serialization for more information on 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 die Main-Methode mit dem STAThreadAttribute-Attribut markiert ist.

Weitere Informationen

Gilt für:

SetDataObject(Object, Boolean)

Löscht die Zwischenablage und platziert dann Daten darauf und gibt an, ob die Daten nach dem Beenden der Anwendung verbleiben 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 Daten, die in der Zwischenablage platziert werden sollen.

copy
Boolean

truewenn Daten nach dem Beenden dieser Anwendung in der Zwischenablage verbleiben sollen; andernfalls . false

Ausnahmen

Daten konnten nicht in die Zwischenablage eingefügt werden. Dies tritt in der Regel auf, wenn die Zwischenablage von einem anderen Prozess verwendet wird.

Der aktuelle Thread befindet sich nicht im Sta-Modus (Single Threaded Apartment). Fügen Sie die STAThreadAttribute Methode Ihrer Anwendung Main hinzu.

Der Wert von data ist null.

Beispiele

Die folgende Methode wird in einer Anwendung ausgeführt. Sie platziert eine permanente Kopie der markierten Textdaten im Textfeld in der Systemablage. Dieser Code setzt voraus, textBox1und es wird davon ausgegangenbutton1, dass es textBox2 in einem Formular erstellt und 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 geht davon aus 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 beim Beenden der Anwendung aus der Systemablage gelöscht.

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

Note

Ein Objekt muss serialisierbar sein, damit es in der Zwischenablage abgelegt werden kann. Wenn Sie ein nicht serialisierbares Objekt an diese Methode übergeben, tritt ein Fehler auf, ohne eine Ausnahme auszuwerfen. Weitere Informationen zur Serialisierung finden Sie unter.See System.Runtime.Serialization for more information on 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 die Main-Methode mit dem STAThreadAttribute-Attribut markiert ist.

Weitere Informationen

Gilt für:

SetDataObject(Object, Boolean, Int32, Int32)

Löscht die Zwischenablage, und versucht dann, Daten darin die angegebene Anzahl von Malen und mit der angegebenen Verzögerung zwischen versuchen, optional die Daten in der Zwischenablage nach dem Beenden der Anwendung zu speichern.

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 Daten, die in der Zwischenablage platziert werden sollen.

copy
Boolean

truewenn Daten nach dem Beenden dieser Anwendung in der Zwischenablage verbleiben sollen; andernfalls . false

retryTimes
Int32

Die Anzahl der Versuche, die Daten in der Zwischenablage zu platzieren.

retryDelay
Int32

Die Anzahl der Millisekunden, die zwischen Versuchen angehalten werden sollen.

Ausnahmen

Der aktuelle Thread befindet sich nicht im Sta-Modus (Single Threaded Apartment). Fügen Sie die STAThreadAttribute Methode Ihrer Anwendung Main hinzu.

data ist null.

retryTimes ist kleiner als 0 (null).

-oder-

retryDelay ist kleiner als 0 (null).

Daten konnten nicht in die Zwischenablage eingefügt werden. Dies tritt in der Regel 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 ausgelastet ist. Diese Methode ist nützlich, um dieses Problem in Umgebungen mit starker Verwendung der Zwischenablage zu umgehen.

Wenn der copy Parameter lautet false, werden die Daten beim Beenden der Anwendung aus der Systemablage gelöscht.

Note

Ein Objekt muss serialisierbar sein, damit es in der Zwischenablage abgelegt werden kann. Wenn Sie ein nicht serialisierbares Objekt an diese Methode übergeben, tritt ein Fehler auf, ohne eine Ausnahme auszuwerfen. Weitere Informationen zur Serialisierung finden Sie unter.See System.Runtime.Serialization for more information on 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 die Main-Methode mit dem STAThreadAttribute-Attribut markiert ist.

Weitere Informationen

Gilt für: