다음을 통해 공유


Clipboard.GetDataObject 메서드

정의

현재 시스템 클립보드에 있는 데이터를 검색합니다.

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

반환

IDataObject

현재 클립보드에 있는 데이터를 나타내는 IDataObject이거나, 클립보드에 데이터가 없으면 null입니다.

예외

클립보드에서 데이터를 검색할 수 없는 경우. 이 예외는 일반적으로 다른 프로세스에서 클립보드를 사용하고 있는 경우 발생합니다.

현재 스레드가 STA(단일 스레드 아파트) 모드에 있지 않고 MessageLoop 속성 값이 true인 경우. STAThreadAttribute를 애플리케이션의 Main 메서드에 추가합니다.

예제

다음 코드 예제에서는 메서드를 사용하여 Clipboard 시스템 클립보드에서 데이터를 배치하고 검색합니다. 이 코드는 button1,를 button2``textBox1가정하고 textBox2 양식에 배치되었습니다.

메서드는 button1_Click 텍스트 상자에서 선택한 텍스트를 가져와서 시스템 클립보드에 배치하기 위해 호출 SetDataObject 합니다.

메서드는 button2_Click 시스템 클립보드에서 데이터를 검색하기 위해 호출 GetDataObject 합니다. 코드는 반환된 데이터를 사용하고 IDataObject DataFormats 추출합니다. 데이터가 에 표시됩니다 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

설명

클립보드에서 반환된 개체의 데이터 형식은 다를 수 있으므로 이 메서드는 데이터를 IDataObject반환합니다. 그런 다음 인터페이스의 메서드를 IDataObject 사용하여 적절한 데이터 형식의 데이터를 추출할 수 있습니다.

이 메서드는 100밀리초 간격으로 데이터를 10번 가져오기를 시도하고 모든 시도가 실패하면 throw ExternalException 합니다.

참고

클래스는 Clipboard STA(단일 스레드 아파트) 모드로 설정된 스레드에서만 사용할 수 있습니다. 이 클래스를 사용하려면 메서드가 Main 특성으로 STAThreadAttribute 표시되어 있는지 확인합니다.

적용 대상

추가 정보