次の方法で共有


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 。 クラスのインスタンスを作成することで、独自の形式を DataFormats.Format 実装できます。

にデータを DataObject格納するには、コンストラクターにデータを渡すか、 を呼び出します SetData。 同じ DataObjectに複数の形式のデータを追加できます。 追加したデータをネイティブ形式でのみ取得する場合は、 パラメーターを に設定して falseautoConvert呼び出しますSetData(String, Boolean, Object)

データは、 と互換性のあるGetData任意の形式で からDataObject取得できます。 たとえば、テキストを Unicode に変換できます。 格納された形式のデータを取得するには、 パラメーターを に設定して falseautoConvert呼び出しますGetData

データが格納されている形式を確認するには、 を呼び出します GetFormats。 形式が使用可能かどうかを判断するには、目的の形式を使用して を呼び出します GetDataPresent

.NET Framework 2.0 では、 クラスには、DataObject一般的な形式のデータを簡単に操作できる追加のメソッドが用意されています。 特定の形式のデータを にDataObject追加するには、 などのSetText適切な SetFormat メソッドを使用します。 から DataObject特定の形式のデータを取得するには、最初に適切な ContainsFormat メソッド (など ContainsText) を呼び出して、 にその形式のデータが含まれているかどうかを DataObject 判断してから、適切な GetFormat メソッド (など GetText) を呼び出して、 にデータが含まれている場合はデータを DataObject 取得します。

注意

クリップボードでメタファイル形式を使用する場合は、特別な考慮事項が必要になる場合があります。 クラスの現在のDataObject実装には制限があるため、.NET Frameworkで使用されるメタファイル形式は、古いメタファイル形式を使用するアプリケーションでは認識されない場合があります。 この場合は、Win32 クリップボード アプリケーション プログラミング インターフェイス (API) と相互運用する必要があります。

オブジェクトをクリップボードに格納するには、それがシリアル化できる必要があります。 シリアル化の詳細については、 を参照してください System.Runtime.Serialization 。 ターゲット アプリケーションで非常に具体的なデータ形式が必要な場合、シリアル化プロセスでデータに追加されたヘッダーによって、アプリケーションがデータを認識できなくなる可能性があります。 データ形式を保持するには、 に配列MemoryStreamとしてデータをByte追加し、 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)

データ オブジェクトとアドバイズ シンク間の接続を作成します。 このメソッドは、アドバイズ シンクをサポートするオブジェクトによって呼び出され、オブジェクトのデータの変更をアドバイズ シンクに通知できるようにします。

IDataObject.DUnadvise(Int32)

以前に確立されていた通知の接続を破棄します。

IDataObject.EnumDAdvise(IEnumSTATDATA)

現在のアドバイザリ コネクションを列挙するために使用できるオブジェクトを作成します。

IDataObject.EnumFormatEtc(DATADIR)

データ オブジェクトの FORMATETC 構造体を列挙するためのオブジェクトを作成します。 これらの構造体は、GetData(FORMATETC, STGMEDIUM) または SetData(FORMATETC, STGMEDIUM, Boolean) の呼び出しで使用されます。

IDataObject.GetCanonicalFormatEtc(FORMATETC, FORMATETC)

より複雑な構造体と論理的に等価な、標準の FORMATETC 構造体を提供します。 このメソッドを使用して、2 つの異なる 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)

このメソッドを実装するオブジェクトにデータを転送します。 このメソッドは、データ ソースを格納しているオブジェクトから呼び出されます。

適用対象

こちらもご覧ください