Freigeben über


DataObject Klasse

Definition

Implementiert einen grundlegenden Datenübertragungsmechanismus.

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
Vererbung
DataObject
Attribute
Implementiert

Beispiele

Im folgenden Codebeispiel werden Daten in einem DataObjecthinzugefügt. Zunächst wird ein neues DataObject erstellt und eine Komponente darin gespeichert. Anschließend wird überprüft, ob daten im entsprechenden Typ vorhanden sind DataObject. Das Ergebnis wird in einem Textfeld angezeigt. Dieser Code erfordert, dass textBox1 erstellt wurde.

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

Im nächsten Beispiel werden die in einem DataObjectgespeicherten Daten abgerufen. Zunächst wird ein neues DataObject mit Textdaten erstellt. Anschließend werden die Daten abgerufen, ihr Format als Zeichenfolge angegeben und in einem Textfeld angezeigt. Das Datenformat wird automatisch von Text in Zeichenfolge konvertiert. Dieser Code erfordert, dass textBox1 erstellt wurde.

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

Hinweise

DataObject implementiert die IDataObject Schnittstelle, deren Methoden einen formatunabhängigen Mechanismus für die Datenübertragung bereitstellen.

A DataObject wird in der Regel mit und Clipboard in Drag-and-Drop-Vorgängen verwendet. Die DataObject -Klasse stellt die empfohlene Implementierung der Schnittstelle bereit IDataObject . Es wird empfohlen, die DataObject -Klasse zu verwenden, anstatt sich selbst zu implementieren IDataObject .

Mehrere Datenteile in unterschiedlichen Formaten können in einem DataObjectgespeichert werden. Daten werden aus einem DataObject durch das zugehörige Format abgerufen. Da die Zielanwendung möglicherweise nicht bekannt ist, können Sie die Wahrscheinlichkeit erhöhen, dass die Daten im für eine Anwendung geeigneten Format vorliegen, indem Sie die Daten in einem DataObject in mehreren Formaten platzieren. Die vordefinierten Formate finden Sie unter DataFormats . Sie können Ihr eigenes Format implementieren, indem Sie eine instance der DataFormats.Format -Klasse erstellen.

Um Daten in einem DataObjectzu speichern, übergeben Sie die Daten an den Konstruktor, oder rufen Sie auf SetData. Sie können Demselben DataObjectDaten in mehreren Formaten hinzufügen. Wenn die hinzugefügten Daten nur im nativen Format abgerufen werden sollen, rufen Sie SetData(String, Boolean, Object) auf, wobei der autoConvert Parameter auf falsefestgelegt ist.

Daten können aus einem in einem DataObject beliebigen Format abgerufen werden, das mit GetDatakompatibel ist. Beispielsweise kann Text in Unicode konvertiert werden. Um Daten in dem Format abzurufen, in dem sie gespeichert wurden, rufen Sie GetData auf, wobei der autoConvert Parameter auf falsefestgelegt ist.

Rufen GetFormatsSie auf, um zu bestimmen, in welchen Formaten die Daten gespeichert werden. Um zu ermitteln, ob ein Format verfügbar ist, rufen Sie GetDataPresent mit dem gewünschten Format auf.

In .NET Framework 2.0 stellt die DataObject -Klasse zusätzliche Methoden bereit, die das Arbeiten mit Daten in gängigen Formaten erleichtern. Um Daten eines bestimmten Formats zu hinzufügen, verwenden Sie die DataObjectentsprechende SetFormat-Methode , z SetText. B. . Um Daten eines bestimmten Formats aus DataObjectabzurufen, rufen Sie zuerst die entsprechende ContainsFormat-Methode (z ContainsText. B. ) auf, um zu bestimmen, ob die DataObject Daten in diesem Format enthält, und rufen Sie dann die entsprechende GetFormat-Methode (z GetText. B. ) auf, um die Daten abzurufen, wenn die DataObject diese enthält.

Hinweis

Bei verwendung des Metadateiformats mit der Zwischenablage können besondere Überlegungen erforderlich sein. Aufgrund einer Einschränkung in der aktuellen Implementierung der DataObject -Klasse wird das vom .NET Framework verwendete Metadateiformat möglicherweise von Anwendungen, die ein älteres Metadateiformat verwenden, nicht erkannt. In diesem Fall müssen Sie mit den Win32-ApIs (Application Programming Interfaces, ApIs) der Zwischenablage zusammenarbeiten.

Ein Objekt muss serialisierbar sein, damit es in der Zwischenablage abgelegt werden kann. Weitere Informationen zur Serialisierung finden Sie System.Runtime.Serialization unter. Wenn Ihre Zielanwendung ein sehr spezifisches Datenformat erfordert, können die Header, die den Daten im Serialisierungsprozess hinzugefügt werden, verhindern, dass die Anwendung Ihre Daten erkennt. Um Ihr Datenformat beizubehalten, fügen Sie Ihre Daten als Byte Array zu einem MemoryStream hinzu, und übergeben Sie die MemoryStream an die SetData -Methode.

Konstruktoren

DataObject()

Initialisiert eine neue Instanz der DataObject-Klasse.

DataObject(Object)

Initialisiert eine neue Instanz der DataObject-Klasse und fügt ihr das angegebene Objekt hinzu.

DataObject(String, Object)

Initialisiert eine neue Instanz der DataObject-Klasse und fügt das angegebene Objekt im angegebenen Format hinzu.

Methoden

ContainsAudio()

Gibt an, ob das Datenobjekt Daten im WaveAudio-Format enthält.

ContainsFileDropList()

Gibt an, ob das Datenobjekt Daten im FileDrop-Format enthält, oder Daten, die in dieses Format konvertiert werden können.

ContainsImage()

Gibt an, ob das Datenobjekt Daten im Bitmap-Format enthält, oder Daten, die in dieses Format konvertiert werden können.

ContainsText()

Gibt an, ob das Datenobjekt Daten im UnicodeText-Format enthält.

ContainsText(TextDataFormat)

Gibt an, ob das Datenobjekt Textdaten enthält, die dem im angegebenen TextDataFormat-Wert aufgeführten Format entsprechen.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetAudioStream()

Ruft einen Audiostream aus dem Datenobjekt ab.

GetData(String)

Gibt die Daten zurück, die dem angegebenen Datenformat zugeordnet sind.

GetData(String, Boolean)

Gibt die dem angegebenen Datenformat zugeordneten Daten zurück. Dabei wird mithilfe eines Parameters für die automatische Konvertierung bestimmt, ob die Daten in das Format konvertiert werden sollen.

GetData(Type)

Gibt die Daten zurück, die dem für den Klassentyp angegebenen Format zugeordnet sind.

GetDataPresent(String)

Bestimmt, ob den in diesem DataObject gespeicherten Daten das angegebene Format zugewiesen ist bzw. diese in das Format konvertiert werden können.

GetDataPresent(String, Boolean)

Bestimmt, ob dieses DataObject Daten im angegebenen Format enthält oder Daten, die in das angegebene Format konvertiert werden können (optional).

GetDataPresent(Type)

Bestimmt, ob den in diesem DataObject gespeicherten Daten das angegebene Format zugewiesen ist bzw. diese in das Format konvertiert werden können.

GetFileDropList()

Ruft eine Auflistung von Dateinamen aus dem Datenobjekt ab.

GetFormats()

Gibt eine Liste aller Formate zurück, die den in diesem DataObject gespeicherten Daten zugeordnet sind oder in die diese Daten konvertiert werden können.

GetFormats(Boolean)

Gibt eine Liste aller Formate zurück, denen in diesem DataObject gespeicherte Daten zugeordnet sind oder in die diese konvertiert werden können. Dabei wird mithilfe eines Parameters für die automatische Konvertierung bestimmt, ob nur systemeigene Datenformate abgerufen werden sollen oder sämtliche Formate, in die die Daten konvertiert werden können.

GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetImage()

Ruft ein Bild aus dem Datenobjekt ab.

GetText()

Ruft Textdaten im UnicodeText-Format aus dem Datenobjekt ab.

GetText(TextDataFormat)

Ruft Textdaten in dem vom angegebenen TextDataFormat-Wert definierten Format aus dem Datenobjekt ab.

GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
SetAudio(Byte[])

Fügt dem Datenobjekt ein Byte-Array im WaveAudio-Format hinzu, nachdem es in einen Stream konvertiert wurde.

SetAudio(Stream)

Fügt dem Datenobjekt einen Stream im WaveAudio-Format hinzu.

SetData(Object)

Fügt das angegebene Objekt dem DataObject mit dem Objekttyp als Datenformat hinzu.

SetData(String, Boolean, Object)

Fügt dem DataObject das angegebene Objekt mit dem angegebenen Format hinzu, wobei angegeben wird, ob die Daten in ein anderes Format konvertiert werden können.

SetData(String, Object)

Fügt dem DataObject das angegebene Objekt mit dem angegebenen Format hinzu.

SetData(Type, Object)

Fügt dem DataObject das angegebene Objekt mit dem angegebenen Typ als Format hinzu.

SetFileDropList(StringCollection)

Fügt dem Datenobjekt eine Auflistung von Dateinamen im FileDrop-Format hinzu.

SetImage(Image)

Fügt dem Datenobjekt ein Image im Bitmap-Format hinzu.

SetText(String)

Fügt dem Datenobjekt Textdaten im UnicodeText-Format hinzu.

SetText(String, TextDataFormat)

Fügt dem Datenobjekt Textdaten in dem vom angegebenen TextDataFormat-Wert definierten Format hinzu.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

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

Erstellt eine Verbindung zwischen einem Datenobjekt und einer Advise-Senke. Diese Methode wird von einem Objekt aufgerufen, das eine Advise-Senke unterstützt, und aktiviert die Advise-Senke für den Empfang von Änderungsbenachrichtigungen für Daten des Objekts.

IDataObject.DUnadvise(Int32)

Zerstört eine Benachrichtigungsverbindung, die zuvor hergestellt wurde.

IDataObject.EnumDAdvise(IEnumSTATDATA)

Erstellt ein Objekt, mit dem die aktuellen Advise-Verbindungen aufgelistet werden können.

IDataObject.EnumFormatEtc(DATADIR)

Erstellt ein Objekt für das Auflisten der FORMATETC-Strukturen für ein Datenobjekt. Diese Strukturen werden in Aufrufen von GetData(FORMATETC, STGMEDIUM) oder SetData(FORMATETC, STGMEDIUM, Boolean) verwendet.

IDataObject.GetCanonicalFormatEtc(FORMATETC, FORMATETC)

Stellt eine Standard-FORMATETC-Struktur bereit, die einer komplexeren Struktur logisch entspricht. Mit dieser Methode können Sie bestimmen, ob zwei unterschiedliche FORMATETC-Strukturen dieselben Daten zurückgeben würden. Dadurch müssen Sie nicht doppelt rendern.

IDataObject.GetData(FORMATETC, STGMEDIUM)

Ruft Daten aus einem Quelldatenobjekt ab. Die von einem Datennutzer aufgerufene GetData(FORMATETC, STGMEDIUM)-Methode rendert die in der angegebenen FORMATETC-Struktur beschriebenen Daten und überträgt diese über die angegebene STGMEDIUM-Struktur. Der Aufrufer ist dann für das Freigeben der STGMEDIUM-Struktur verantwortlich.

IDataObject.GetDataHere(FORMATETC, STGMEDIUM)

Ruft Daten aus einem Quelldatenobjekt ab. Diese Methode, die von einem Datennutzer aufgerufen wird, unterscheidet sich von der GetData(FORMATETC, STGMEDIUM)-Methode dadurch, dass der Aufrufer das angegebene Speichermedium zuordnen und freigeben muss.

IDataObject.QueryGetData(FORMATETC)

Bestimmt, ob das Datenobjekt die in der FORMATETC-Struktur beschriebenen Daten rendern kann. Objekte, die einen Einfüge oder Ablagevorgang ausführen möchten, können diese Methode aufrufen, bevor sie GetData(FORMATETC, STGMEDIUM) aufrufen, um zu bestimmen, ob der Vorgang erfolgreich durchgeführt werden kann.

IDataObject.SetData(FORMATETC, STGMEDIUM, Boolean)

Überträgt Daten an das Objekt, das diese Methode implementiert. Diese Methode wird von einem Objekt aufgerufen, das eine Datenquelle enthält.

Gilt für:

Weitere Informationen