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) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。
解説
DataObject は IDataObject インターフェイスを実装し、そのメソッドは形式に依存しないデータ転送のための機構を提供します。
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