DataObject クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
基本的なデータ転送メカニズムを実装します。
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
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に複数の形式のデータを追加できます。 追加したデータをネイティブ形式でのみ取得する場合は、autoConvert パラメーターを false に設定してSetData(String, Boolean, Object)を呼び出します。
データは、GetDataと互換性のある任意の形式でDataObjectから取得できます。 たとえば、テキストを Unicode に変換できます。 格納された形式のデータを取得するには、autoConvert パラメーターを false に設定してGetDataを呼び出します。
データが格納されている形式を確認するには、 GetFormatsを呼び出します。 形式を使用できるかどうかを判断するには、目的の形式で GetDataPresent を呼び出します。
DataObject クラスには、一般的な形式のデータを簡単に操作できる追加のメソッドが用意されています。 特定の形式のデータを DataObjectに追加するには、適切な SetFormat メソッド ( SetText など) を使用します。
DataObjectから特定の形式のデータを取得するには、最初に適切なContainsFormat メソッド (ContainsText など) を呼び出して、DataObjectにその形式のデータが含まれているかどうかを判断してから、適切な GetFormat メソッド (GetText など) を呼び出して、DataObjectにデータが含まれている場合にデータを取得します。
Note
クリップボードでメタファイル形式を使用する場合は、特別な考慮事項が必要になる場合があります。 DataObject クラスの現在の実装に制限があるため、.NET Framework で使用されるメタファイル形式は、古いメタファイル形式を使用するアプリケーションでは認識されない可能性があります。 この場合は、Win32 クリップボード アプリケーション プログラミング インターフェイス (API) と相互運用する必要があります。
オブジェクトをクリップボードに配置するには、オブジェクトをシリアル化できる必要があります。 シリアル化の詳細については、 System.Runtime.Serialization を参照してください。 ターゲット アプリケーションで非常に具体的なデータ形式が必要な場合、シリアル化プロセスでデータに追加されたヘッダーによって、アプリケーションがデータを認識できなくなる可能性があります。 データ形式を保持するには、データをMemoryStreamにByte配列として追加し、MemoryStreamを SetData メソッドに渡します。
コンストラクター
| 名前 | 説明 |
|---|---|
| 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, Boolean) |
自動変換パラメーターを使用して、データを形式に変換するかどうかを判断して、指定したデータ形式に関連付けられているデータを返します。 |
| GetData(String) |
指定したデータ形式に関連付けられているデータを返します。 |
| GetData(Type) |
指定したクラス型形式に関連付けられているデータを返します。 |
| GetDataPresent(String, Boolean) |
この DataObject に指定した形式のデータが含まれているか、または必要に応じて、指定した形式に変換できるデータが含まれているかどうかを判断します。 |
| GetDataPresent(String) |
この 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[]) | |
| SetAudio(Stream) | |
| SetData(Object) |
データ形式としてオブジェクト型を使用して、指定したオブジェクトを DataObject に追加します。 |
| SetData(String, Boolean, Object) |
指定した形式を使用して、指定したオブジェクトを DataObject に追加し、データを別の形式に変換できるかどうかを示します。 |
| SetData(String, Object) |
指定した形式を使用して、指定したオブジェクトを DataObject に追加します。 |
| SetData(Type, Object) |
指定した型を形式として使用して、指定したオブジェクトを DataObject に追加します。 |
| SetFileDropList(StringCollection) |
FileDrop形式でデータ オブジェクトにファイル名のコレクションを追加します。 |
| SetImage(Image) | |
| SetText(String, TextDataFormat) |
指定した TextDataFormat 値で示される形式で、データ オブジェクトにテキスト データを追加します。 |
| SetText(String) |
UnicodeText形式でデータ オブジェクトにテキスト データを追加します。 |
| 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) |
このメソッドを実装するオブジェクトにデータを転送します。 このメソッドは、データ ソースを含むオブジェクトによって呼び出されます。 |