DataObject クラス

基本データ転送機構を実装します。

この型のすべてのメンバの一覧については、DataObject メンバ を参照してください。

System.Object
   System.Windows.Forms.DataObject

<ClassInterface(ClassInterfaceType.None)>
Public Class DataObject   Implements IDataObject
[C#]
[ClassInterface(ClassInterfaceType.None)]
public class DataObject : IDataObject
[C++]
[ClassInterface(ClassInterfaceType::None)]
public __gc class DataObject : public IDataObject
[JScript]
public
   ClassInterface(ClassInterfaceType.None)
class DataObject implements IDataObject

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

DataObjectIDataObject インターフェイスを実装し、そのメソッドは形式に依存しないデータ転送のための機構を提供します。

DataObject は、通常 Clipboard と共に使用されたり、ドラッグ アンド ドロップ操作で使用されたりします。 DataObject クラスは、 IDataObject インターフェイスの推奨される実装を提供します。独自に IDataObject を実装するのではなく、 DataObject クラスを使用することをお勧めします。

異なった形式の複数のデータを DataObject のインスタンスに格納できます。データは、そのデータに関連付けられている形式によって、インスタンスから取得されます。データを取り出す側のアプリケーションの形式が不明なので、 DataObject のデータを複数の形式にしておくと、アプリケーションのデータが適切な形式になる可能性が高くなります。定義済みの形式については、 DataFormats のトピックを参照してください。 DataFormats.Format クラスのインスタンスを作成することにより、独自の形式を実装できます。

このクラスのインスタンスのデータを格納するには、データをコンストラクタに渡すか、 SetData を呼び出します。このクラスのインスタンスに、ほかの形式のデータを追加できます。追加するデータが常にネイティブ形式で取得されるようにする場合は、 autoConvert パラメータを false に設定して SetData を呼び出します。

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

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

使用例

[Visual Basic, C#, C++] DataObject にデータを追加する例を次に示します。まず、新しい DataObject が作成されて、その中にコンポーネントが格納されます。次に、 DataObject に適切な種類のデータが存在するかどうかを調べます。結果はテキスト ボックスに表示されます。このコードは、 textBox1 が作成されていることを前提にしています。

 
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 'AddMyData3


[C#] 
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";
 }

[C++] 
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 = String::Format( S"Data of type {0} is present in the DataObject", myType );
    else
       textBox1->Text = String::Format( S"Data of type {0} is not present in the DataObject", myType );
 }

[Visual Basic, C#, C++] DataObject に格納されているデータを取得する例を次に示します。まず、テキスト データを含む新しい DataObject が作成されます。次に、そのデータが取得され、形式が文字列に指定されてテキスト ボックスに表示されます。データ形式は自動的にテキストから文字列に変換されます。このコードは、 textBox1 が作成されていることを前提にしています。

 
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("System.String").ToString()
End Sub 'GetMyData2

[C#] 
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("System.String").ToString();
 }

[C++] 
private:
void GetMyData2() {
    // Creates a new data object using a string and the text format.
    DataObject* myDataObject = new DataObject(DataFormats::Text, S"Text to Store");
 
    // Prints the string in a text box.
    textBox1->Text = myDataObject->GetData(S"System.String")->ToString();
 }

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Windows.Forms

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

アセンブリ: System.Windows.Forms (System.Windows.Forms.dll 内)

参照

DataObject メンバ | System.Windows.Forms 名前空間 | Clipboard | IDataObject | DataFormats