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 derzeit in der Systemablage befinden.
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 Wert, der die Daten darstellt, die sich derzeit in der Zwischenablage befinden, oder null wenn keine Daten in der Zwischenablage vorhanden sind.
Ausnahmen
Daten konnten nicht aus der Zwischenablage abgerufen 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 (SingleThreaded Apartment), und der MessageLoop Eigenschaftswert ist true. Fügen Sie die STAThreadAttribute Methode Ihrer Anwendung Main hinzu.
Beispiele
Im folgenden Codebeispiel werden Clipboard Methoden verwendet, um Daten in der Systemablage zu platzieren und aus der Systemablage abzurufen. Dieser Code setzt voraus, textBox1textBox2 dass button1button2sie auf dem Formular platziert wurden.
Die button1_Click Methode ruft den SetDataObject markierten Text aus dem Textfeld auf und platziert ihn 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 angezeigt in textBox2.
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 aus der 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 zehnmal in Intervallen von 100 Millisekunden abzurufen, und löst einen ExternalException Fall aus, wenn alle Versuche nicht erfolgreich sind.
Note
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.