Auf Englisch lesen

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 (object data);

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 != "")
       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.";
    }
 }

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 (object data, bool copy);

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 != "")
       Clipboard.SetDataObject(textBox1.SelectedText, true);
    else
       textBox2.Text = "No text selected in textBox1";
 }

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.";
    }
 }

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 (object data, bool copy, int retryTimes, int retryDelay);

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