다음을 통해 공유


DataObject 클래스

정의

기본 데이터 전송 메커니즘을 구현합니다.

public ref class DataObject : System::Windows::Forms::IDataObject
public ref class DataObject : System::Runtime::InteropServices::ComTypes::IDataObject, System::Windows::Forms::IDataObject
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
public class DataObject : System.Windows.Forms.IDataObject
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
public class DataObject : System.Runtime.InteropServices.ComTypes.IDataObject, System.Windows.Forms.IDataObject
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
type DataObject = class
    interface IDataObject
    interface UnsafeNativeMethods.IOleDataObject
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
type DataObject = class
    interface IDataObject
    interface IDataObject
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
type DataObject = class
    interface IDataObject
    interface IDataObject
    interface IDataObject.Interface
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
type DataObject = class
    interface IDataObject
    interface IDataObject.Interface
    interface IDataObject
Public Class DataObject
Implements IDataObject
Public Class DataObject
Implements IDataObject, IDataObject
상속
DataObject
특성
구현

예제

다음 코드 예제에서는 에 데이터를 추가합니다 DataObject. 먼저 새 DataObject 가 만들어지고 구성 요소가 저장됩니다. 그런 다음 적절한 형식의 데이터가 에 있는지 확인합니다 DataObject. 결과 텍스트 상자에 표시 됩니다. 이 코드를 실행 하려면 textBox1 만들었습니다.

private:
   void AddMyData3()
   {
      // Creates a component to store in the data object.
      Component^ myComponent = gcnew Component;
      
      // Creates a new data object.
      DataObject^ myDataObject = gcnew DataObject;
      
      // Adds the component to the DataObject.
      myDataObject->SetData( myComponent );
      
      // Prints whether data of the specified type is in the DataObject.
      Type^ myType = myComponent->GetType();
      if ( myDataObject->GetDataPresent( myType ) )
      {
         textBox1->Text = String::Concat( "Data of type ", myType,
            " is present in the DataObject" );
      }
      else
      {
         textBox1->Text = String::Concat( "Data of type ", myType,
            " is not present in the DataObject" );
      }
   }
private void AddMyData3() {
    // Creates a component to store in the data object.
    Component myComponent = new Component();
 
    // Creates a new data object.
    DataObject myDataObject = new DataObject();
 
    // Adds the component to the DataObject.
    myDataObject.SetData(myComponent);
 
    // Prints whether data of the specified type is in the DataObject.
    Type myType = myComponent.GetType();
    if(myDataObject.GetDataPresent(myType))
       textBox1.Text = "Data of type " + myType.ToString() + 
       " is present in the DataObject";
    else
       textBox1.Text = "Data of type " + myType.ToString() +
       " is not present in the DataObject";
 }
Private Sub AddMyData3()
    ' Creates a component to store in the data object.
    Dim myComponent As New Component()
    
    ' Creates a new data object.
    Dim myDataObject As New DataObject()
    
    ' Adds the component to the DataObject.
    myDataObject.SetData(myComponent)
    
    ' Prints whether data of the specified type is in the DataObject.
    Dim myType As Type = myComponent.GetType()
    If myDataObject.GetDataPresent(myType) Then
        textBox1.Text = "Data of type " & myType.ToString() & _
            " is present in the DataObject"
    Else
        textBox1.Text = "Data of type " & myType.ToString() & _
            " is not present in the DataObject"
    End If
End Sub

다음 예제에서는 에 저장된 데이터를 검색합니다 DataObject. 먼저 텍스트 데이터를 사용하여 새 DataObject 를 만듭니다. 그런 다음 데이터를 검색하여 해당 형식을 문자열로 지정하고 텍스트 상자에 표시합니다. 데이터 형식은 텍스트에서 문자열로 자동으로 변환됩니다. 이 코드를 실행 하려면 textBox1 만들었습니다.

void GetMyData2()
{
   // Creates a new data object using a string and the text format.
   DataObject^ myDataObject = gcnew DataObject( DataFormats::Text,"Text to Store" );
   
   // Prints the string in a text box.
   textBox1->Text = myDataObject->GetData( DataFormats::Text )->ToString();
}
private void GetMyData2() {
    // Creates a new data object using a string and the text format.
    DataObject myDataObject = new DataObject(DataFormats.Text, "Text to Store");
 
    // Prints the string in a text box.
    textBox1.Text = myDataObject.GetData(DataFormats.Text).ToString();
 }
Private Sub GetMyData2()
    ' Creates a new data object using a string and the text format.
    Dim myDataObject As New DataObject(DataFormats.Text, "Text to Store")
    
    ' Prints the string in a text box.
    textBox1.Text = myDataObject.GetData(DataFormats.Text).ToString()
End Sub

설명

DataObject 는 메서드가 IDataObject 데이터 전송을 위한 형식 독립적 메커니즘을 제공하는 인터페이스를 구현합니다.

DataObject 는 일반적으로 끌어서 놓기 작업에서 및 와 함께 Clipboard 사용됩니다. 클래스는 DataObject 인터페이스의 권장 구현을 IDataObject 제공합니다. 직접 구현 IDataObject 하는 대신 클래스를 DataObject 사용하는 것이 좋습니다.

다양한 형식의 여러 데이터 조각을 에 DataObject저장할 수 있습니다. 데이터는 연결된 형식으로 DataObject 에서 검색됩니다. 대상 애플리케이션을 확인할 수 없는, 때문에 데이터의 데이터를 배치 하 여 애플리케이션에 대 한 적절 한 형식 될 가능성을 높일 수 있습니다는 DataObject 여러 형식에서입니다. 미리 정의된 형식은 를 참조 DataFormats 하세요. 클래스의 instance 만들어 고유한 형식을 구현할 DataFormats.Format 수 있습니다.

DataObject데이터를 저장하려면 생성자에 데이터를 전달하거나 를 호출 SetData합니다. 동일한 DataObject에 여러 형식의 데이터를 추가할 수 있습니다. 추가한 데이터를 네이티브 형식으로만 검색하려면 매개 변수를 autoConvert 로 설정하여 를 호출 SetData(String, Boolean, Object) 합니다false.

와 호환GetData되는 모든 형식의 DataObject 에서 데이터를 검색할 수 있습니다. 예를 들어 텍스트를 유니코드로 변환할 수 있습니다. 저장된 형식으로 데이터를 검색하려면 매개 변수를 로 설정하여 autoConvert 를 호출 GetData 합니다false.

데이터가 저장되는 형식을 확인하려면 를 호출 GetFormats합니다. 형식을 사용할 수 있는지 확인하려면 원하는 형식으로 를 호출 GetDataPresent 합니다.

.NET Framework 2.0 DataObject 에서 클래스는 공통 형식의 데이터를 더 쉽게 작업할 수 있는 추가 메서드를 제공합니다. 특정 형식DataObject의 데이터를 에 추가하려면 와 같은 SetText적절한 SetFormat 메서드를 사용합니다. 에서 DataObject특정 형식의 데이터를 검색하려면 먼저 적절한 ContainsFormat 메서드(예: ContainsText)를 호출하여 에 해당 형식의 데이터가 포함되어 있는지 확인한 DataObject 다음 적절한 GetFormat 메서드(예: GetText)를 호출하여 데이터가 포함된 경우 DataObject 데이터를 검색합니다.

참고

클립보드와 함께 메타파일 형식을 사용하는 경우 특별한 고려 사항이 필요할 수 있습니다. 현재 구현에서 제한으로 인해는 DataObject 이전 메타 파일 형식을 사용 하는 애플리케이션에서 클래스를 사용 하는.NET Framework 메타 파일 형식을 인식할 수 없습니다. 이 경우에 Win32 클립보드 Api (애플리케이션 프로그래밍 인터페이스)를 사용 하 여 상호 운용 해야 합니다.

개체를 클립보드에 배치할 수 있도록 직렬화가 가능해야 합니다. serialization에 대한 자세한 내용은 를 참조하세요 System.Runtime.Serialization . 대상 애플리케이션 특정 데이터 형식에 필요한 경우 데이터 serialization 프로세스에 추가 된 헤더에는 애플리케이션에서 데이터를 인식 하지 못할 수 있습니다. 데이터 형식을 유지하려면 데이터를 에 배열 MemoryStreamByte 추가하고 를 메서드에 SetData 전달 MemoryStream 합니다.

생성자

DataObject()

DataObject 클래스의 새 인스턴스를 초기화합니다.

DataObject(Object)

DataObject 클래스의 새 인스턴스를 초기화하고 지정된 개체를 추가합니다.

DataObject(String, Object)

DataObject 클래스의 새 인스턴스를 초기화하고 지정된 형식의 지정된 개체를 추가합니다.

메서드

ContainsAudio()

데이터 개체에 WaveAudio 형식의 데이터가 포함되어 있는지 여부를 나타냅니다.

ContainsFileDropList()

데이터 개체에 FileDrop 형식으로 되어 있거나 해당 형식으로 변환될 수 있는 데이터가 포함되어 있는지 여부를 나타냅니다.

ContainsImage()

데이터 개체에 Bitmap 형식으로 되어 있거나 해당 형식으로 변환될 수 있는 데이터가 포함되어 있는지 여부를 나타냅니다.

ContainsText()

데이터 개체에 UnicodeText 형식의 데이터가 포함되어 있는지 여부를 나타냅니다.

ContainsText(TextDataFormat)

지정된 TextDataFormat 값이 나타내는 형식의 텍스트 데이터가 데이터 개체에 포함되어 있는지 여부를 나타냅니다.

Equals(Object)

지정된 개체가 현재 개체와 같은지 확인합니다.

(다음에서 상속됨 Object)
GetAudioStream()

데이터 개체에서 오디오 스트림을 검색합니다.

GetData(String)

지정된 데이터 형식과 관련된 데이터를 반환합니다.

GetData(String, Boolean)

자동 변환 매개 변수를 사용해서 데이터를 해당 형식으로 변환할지 여부를 결정하고 지정된 데이터 형식과 관련된 데이터를 반환합니다.

GetData(Type)

지정된 클래스 형식과 관련된 데이터를 반환합니다.

GetDataPresent(String)

DataObject에 저장된 데이터가 지정된 형식과 연결되어 있거나 지정된 형식으로 변환될 수 있는지 여부를 확인합니다.

GetDataPresent(String, Boolean)

DataObject에 지정된 형식의 데이터가 포함되어 있는지 여부를 확인하고 지정된 형식으로 변환될 수 있는 데이터가 포함되어 있는지 여부를 선택적으로 확인합니다.

GetDataPresent(Type)

DataObject에 저장된 데이터가 지정된 형식과 연결되어 있거나 지정된 형식으로 변환될 수 있는지 여부를 확인합니다.

GetFileDropList()

데이터 개체에서 파일 이름의 컬렉션을 검색합니다.

GetFormats()

DataObject에 저장된 데이터가 관련되어 있거나 변환될 수 있는 모든 형식의 목록을 반환합니다.

GetFormats(Boolean)

자동 변환 매개 변수를 사용하여 네이티브 데이터 형식만 검색할지 아니면 데이터가 변환될 수 있는 모든 형식을 검색할지를 결정하여 이 DataObject에 저장된 데이터가 관련되어 있거나 변환될 수 있는 모든 형식의 목록을 반환합니다.

GetHashCode()

기본 해시 함수로 작동합니다.

(다음에서 상속됨 Object)
GetImage()

데이터 개체에서 이미지를 검색합니다.

GetText()

데이터 개체에서 UnicodeText 형식의 텍스트 데이터를 검색합니다.

GetText(TextDataFormat)

지정된 TextDataFormat 값이 나타내는 형식의 텍스트 데이터를 데이터 개체에서 검색합니다.

GetType()

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
SetAudio(Byte[])

Byte 형식의 WaveAudio 배열을 Stream으로 변환한 후 데이터 개체에 추가합니다.

SetAudio(Stream)

Stream 형식의 WaveAudio을 데이터 개체에 추가합니다.

SetData(Object)

개체 형식을 데이터 형식으로 사용하여 DataObject에 지정된 개체를 추가합니다.

SetData(String, Boolean, Object)

지정된 형식을 사용하고 데이터가 다른 형식으로 변환될 수 있는지 여부를 나타내어 DataObject에 지정된 개체를 추가합니다.

SetData(String, Object)

지정된 형식을 사용하여 DataObject에 지정된 개체를 추가합니다.

SetData(Type, Object)

지정된 형식을 형식으로 사용하여 DataObject에 지정된 개체를 추가합니다.

SetFileDropList(StringCollection)

FileDrop 형식의 파일 이름 컬렉션을 데이터 개체에 추가합니다.

SetImage(Image)

Image 형식의 Bitmap를 데이터 개체에 추가합니다.

SetText(String)

UnicodeText 형식의 텍스트 데이터를 데이터 개체에 추가합니다.

SetText(String, TextDataFormat)

지정된 TextDataFormat 값이 나타내는 형식의 텍스트 데이터를 데이터 개체에 추가합니다.

ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)

명시적 인터페이스 구현

IDataObject.DAdvise(FORMATETC, ADVF, IAdviseSink, Int32)

데이터 개체와 advise 싱크 간의 연결을 만듭니다. 이 메서드는 advise 싱크를 지원하는 개체에 의해 호출되며, advise 싱크가 개체의 데이터 변경 내용에 대한 알림을 받을 수 있도록 합니다.

IDataObject.DUnadvise(Int32)

이전에 설정된 알림 연결을 제거합니다.

IDataObject.EnumDAdvise(IEnumSTATDATA)

현재 advise 연결을 열거하는 데 사용할 수 있는 개체를 만듭니다.

IDataObject.EnumFormatEtc(DATADIR)

데이터 개체의 FORMATETC 구조체를 열거하기 위한 개체를 만듭니다. 이러한 구조체는 GetData(FORMATETC, STGMEDIUM) 또는 SetData(FORMATETC, STGMEDIUM, Boolean)를 호출할 때 사용됩니다.

IDataObject.GetCanonicalFormatEtc(FORMATETC, FORMATETC)

보다 복잡한 구조체와 논리적으로 일치하는 표준 FORMATETC 구조체를 제공합니다. 이 메서드를 사용하면 서로 다른 두 개의 FORMATETC 구조체에서 동일한 데이터를 반환하는지 여부를 확인하여 중복 렌더링이 필요하지 않게 할 수 있습니다.

IDataObject.GetData(FORMATETC, STGMEDIUM)

소스 데이터 개체에서 데이터를 가져옵니다. 데이터 소비자에 의해 호출되는 GetData(FORMATETC, STGMEDIUM) 메서드는 지정된 FORMATETC 구조체에 설명된 데이터를 렌더링하고, 지정된 STGMEDIUM 구조체를 통해 이 데이터를 전송합니다. 그러면 호출자는 STGMEDIUM 구조체를 해제하는 역할을 맡습니다.

IDataObject.GetDataHere(FORMATETC, STGMEDIUM)

소스 데이터 개체에서 데이터를 가져옵니다. 데이터 소비자가 호출하는 이 메서드는 지정된 스토리지 미디어를 호출자가 할당하고 해제해야 한다는 점에서 GetData(FORMATETC, STGMEDIUM) 메서드와 차이가 있습니다.

IDataObject.QueryGetData(FORMATETC)

데이터 개체가 FORMATETC 구조체에 설명된 데이터를 렌더링할 수 있는지 여부를 확인합니다. 붙여넣기 또는 놓기 작업을 시도하는 개체에서는 GetData(FORMATETC, STGMEDIUM)를 호출하기 전에 이 메서드를 호출하여 해당 작업을 수행할 수 있는지 여부를 나타내는 값을 가져올 수 있습니다.

IDataObject.SetData(FORMATETC, STGMEDIUM, Boolean)

이 메서드를 구현하는 개체에 데이터를 전송합니다. 이 메서드는 데이터 소스가 들어 있는 개체에서 호출됩니다.

적용 대상

추가 정보