Clipboard.GetDataObject 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.
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
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``textBox1
und 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 textBox2
angezeigt.
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.