Clipboard.GetDataObject Metod

Definition

Hämtar de data som för närvarande finns i systemets Urklipp.

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

Returer

En IDataObject som representerar de data som för närvarande finns i Urklipp eller null om det inte finns några data i Urklipp.

Undantag

Det gick inte att hämta data från Urklipp. Detta inträffar vanligtvis när Urklipp används av en annan process.

Den aktuella tråden är inte i sta-läge (single-threaded apartment) och egenskapsvärdet MessageLoop är true. Lägg till i STAThreadAttribute programmets Main metod.

Exempel

I följande kodexempel används Clipboard metoder för att placera data på och hämta dem från systemets Urklipp. Den här koden förutsätter button1, button2, textBox1och textBox2 har placerats i formuläret.

Metoden button1_Click anropar SetDataObject för att ta ut markerad text från textrutan och placera den i systemets Urklipp.

Metoden button2_Click anropar GetDataObject för att hämta data från systemets Urklipp. Koden använder IDataObject och DataFormats för att extrahera data som returneras. Data visas i 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

Kommentarer

Eftersom datatypen för objektet som returneras från Urklipp kan variera returnerar den här metoden data i en IDataObject. Sedan kan du använda gränssnittsmetoder för IDataObject att extrahera data i rätt datatyp.

Den här metoden försöker hämta data tio gånger i 100 millisekunders intervall och genererar ett ExternalException om alla försök misslyckas.

Note

Klassen Clipboard kan endast användas i trådar som är inställda på sta-läge (single thread apartment). Om du vill använda den här klassen kontrollerar du att din Main-metod har markerats med attributet STAThreadAttribute.

Gäller för

Se även