Clipboard.SetDataObject Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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.