DataObject Klasa

Definicja

Implementuje podstawowy mechanizm transferu danych.

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
Dziedziczenie
DataObject
Atrybuty
Implementuje

Przykłady

Poniższy przykład kodu dodaje dane w obiekcie DataObject. Najpierw tworzony jest nowy DataObject składnik i jest w nim przechowywany. Następnie sprawdza, czy dane w odpowiednim typie istnieją w obiekcie DataObject. Wynik jest wyświetlany w polu tekstowym. Ten kod wymaga textBox1 utworzenia.

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

Następny przykład pobiera dane przechowywane w obiekcie DataObject. Najpierw jest tworzony nowy DataObject z danymi tekstowymi. Następnie dane są pobierane, określając jego format jako ciąg i wyświetlane w polu tekstowym. Format danych jest automatycznie konwertowany z tekstu na ciąg. Ten kod wymaga textBox1 utworzenia.

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

Uwagi

DataObject implementuje IDataObject interfejs, którego metody zapewniają niezależny od formatu mechanizm transferu danych.

Typ A DataObject jest zwykle używany z operacjami Clipboard przeciągania i upuszczania. Klasa DataObject udostępnia zalecaną implementację interfejsu IDataObject . Zaleca się użycie DataObject klasy, a nie zaimplementowanie IDataObject jej samodzielnie.

Wiele fragmentów danych w różnych formatach można przechowywać w obiekcie DataObject. Dane są pobierane z obiektu w skojarzonym DataObject formacie. Ponieważ aplikacja docelowa może nie być znana, można zwiększyć prawdopodobieństwo, że dane będą w odpowiednim formacie dla aplikacji, umieszczając dane w DataObject wielu formatach. Zobacz DataFormats , aby zapoznać się ze wstępnie zdefiniowanymi formatami. Możesz zaimplementować własny format, tworząc wystąpienie DataFormats.Format klasy.

Aby przechowywać dane w obiekcie DataObject, przekaż dane do konstruktora lub wywołaj metodę SetData. Dane można dodawać w wielu formatach do tego samego DataObjectpliku . Jeśli chcesz, aby dane dodane do pobrania w formacie natywnym było pobierane tylko w formacie natywnym, wywołaj metodę SetData(String, Boolean, Object) z parametrem ustawionym autoConvert na falsewartość .

Dane można pobrać z dowolnego formatu zgodnego DataObject z GetDataprogramem . Na przykład tekst można przekonwertować na Unicode. Aby pobrać dane w formacie, w którym były przechowywane, wywołaj metodę GetData z parametrem ustawionym autoConvert na false.

Aby określić, w jakich formatach są przechowywane dane, wywołaj metodę GetFormats. Aby określić, czy format jest dostępny, wywołaj metodę GetDataPresent z żądanym formatem.

W .NET Framework 2.0 DataObject klasa udostępnia dodatkowe metody, które ułatwiają pracę z danymi w typowych formatach. Aby dodać dane określonego formatu do DataObjectklasy , użyj odpowiedniej Set metody Format, takiej jak SetText. Aby pobrać dane określonego formatu z DataObjectklasy , najpierw wywołaj odpowiednią Contains metodę Format (na przykład ContainsText), aby określić, czy DataObject dane zawierają dane w tym formacie, a następnie wywołaj odpowiednią Get metodę Format (na GetTextprzykład ), aby pobrać dane, jeśli DataObject zawiera.

Uwaga

Podczas korzystania z formatu metapliku ze Schowkiem mogą być konieczne specjalne zagadnienia. Ze względu na ograniczenie w bieżącej implementacji klasy, format metapliku DataObject używany przez .NET Framework może nie być rozpoznawany przez aplikacje używające starszego formatu metapliku. W takim przypadku należy współpracować z interfejsami programowania aplikacji Schowka Win32 (API).

Obiekt musi być serializowalny, aby można go było umieścić w Schowku. Zobacz System.Runtime.Serialization , aby uzyskać więcej informacji na temat serializacji. Jeśli aplikacja docelowa wymaga bardzo konkretnego formatu danych, nagłówki dodane do danych w procesie serializacji mogą uniemożliwić aplikacji rozpoznawanie danych. Aby zachować format danych, dodaj dane jako tablicę Byte do MemoryStream obiektu i przekaż MemoryStream element do SetData metody .

Konstruktory

DataObject()

Inicjuje nowe wystąpienie klasy DataObject.

DataObject(Object)

Inicjuje DataObject nowe wystąpienie klasy i dodaje do niego określony obiekt.

DataObject(String, Object)

Inicjuje DataObject nowe wystąpienie klasy i dodaje określony obiekt w określonym formacie.

Metody

ContainsAudio()

Wskazuje, czy obiekt danych zawiera dane w WaveAudio formacie.

ContainsFileDropList()

Wskazuje, czy obiekt danych zawiera dane w FileDrop formacie, czy można je przekonwertować na ten format.

ContainsImage()

Wskazuje, czy obiekt danych zawiera dane w Bitmap formacie, czy można je przekonwertować na ten format.

ContainsText()

Wskazuje, czy obiekt danych zawiera dane w UnicodeText formacie.

ContainsText(TextDataFormat)

Wskazuje, czy obiekt danych zawiera dane tekstowe w formacie wskazanym przez określoną TextDataFormat wartość.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetAudioStream()

Pobiera strumień audio z obiektu danych.

GetData(String)

Zwraca dane skojarzone z określonym formatem danych.

GetData(String, Boolean)

Zwraca dane skojarzone z określonym formatem danych przy użyciu parametru zautomatyzowanej konwersji, aby określić, czy przekonwertować dane na format.

GetData(Type)

Zwraca dane skojarzone z określonym formatem typu klasy.

GetDataPresent(String)

Określa, czy dane przechowywane w tym DataObject pliku są skojarzone z określonym formatem lub można je przekonwertować na.

GetDataPresent(String, Boolean)

Określa, czy zawiera dane DataObject w określonym formacie, czy też opcjonalnie zawiera dane, które można przekonwertować na określony format.

GetDataPresent(Type)

Określa, czy dane przechowywane w tym DataObject pliku są skojarzone z określonym formatem lub można je przekonwertować na.

GetFileDropList()

Pobiera kolekcję nazw plików z obiektu danych.

GetFormats()

Zwraca listę wszystkich formatów, z którymi są skojarzone dane przechowywane w tym DataObject obiekcie lub do których można je przekonwertować.

GetFormats(Boolean)

Zwraca listę wszystkich formatów, z którymi dane przechowywane w tym DataObject obiekcie są skojarzone lub można je przekonwertować, przy użyciu parametru konwersji automatycznej w celu określenia, czy pobierać tylko natywne formaty danych, czy wszystkie formaty, na które można przekonwertować dane.

GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetImage()

Pobiera obraz z obiektu danych.

GetText()

Pobiera dane tekstowe z obiektu danych w UnicodeText formacie .

GetText(TextDataFormat)

Pobiera dane tekstowe z obiektu danych w formacie wskazanym przez określoną TextDataFormat wartość.

GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
SetAudio(Byte[])

Dodaje tablicę Byte do obiektu danych w WaveAudio formacie po przekonwertowaniu jej na obiekt Stream.

SetAudio(Stream)

Dodaje obiekt Stream do obiektu danych w WaveAudio formacie .

SetData(Object)

Dodaje określony obiekt do DataObject obiektu przy użyciu typu obiektu jako format danych.

SetData(String, Boolean, Object)

Dodaje określony obiekt do DataObject obiektu przy użyciu określonego formatu i wskazuje, czy dane można przekonwertować na inny format.

SetData(String, Object)

Dodaje określony obiekt do DataObject obiektu przy użyciu określonego formatu.

SetData(Type, Object)

Dodaje określony obiekt do DataObject obiektu przy użyciu określonego typu jako formatu.

SetFileDropList(StringCollection)

Dodaje kolekcję nazw plików do obiektu danych w FileDrop formacie .

SetImage(Image)

Dodaje obiekt Image do obiektu danych w Bitmap formacie .

SetText(String)

Dodaje dane tekstowe do obiektu danych w UnicodeText formacie .

SetText(String, TextDataFormat)

Dodaje dane tekstowe do obiektu danych w formacie wskazanym przez określoną TextDataFormat wartość.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Jawne implementacje interfejsu

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

Tworzy połączenie między obiektem danych a ujściem poradnika. Ta metoda jest wywoływana przez obiekt, który obsługuje ujście porad i umożliwia ujście porady powiadamianie o zmianach w danych obiektu.

IDataObject.DUnadvise(Int32)

Niszczy połączenie powiadomień, które zostało wcześniej ustanowione.

IDataObject.EnumDAdvise(IEnumSTATDATA)

Tworzy obiekt, który może służyć do wyliczania bieżących połączeń doradczych.

IDataObject.EnumFormatEtc(DATADIR)

Tworzy obiekt do wyliczania FORMATETC struktur dla obiektu danych. Te struktury są używane w wywołaniach metody GetData(FORMATETC, STGMEDIUM) lub SetData(FORMATETC, STGMEDIUM, Boolean).

IDataObject.GetCanonicalFormatEtc(FORMATETC, FORMATETC)

Zapewnia standardową FORMATETC strukturę, która jest logicznie równoważna bardziej złożonej strukturze. Użyj tej metody, aby określić, czy dwie różne FORMATETC struktury będą zwracać te same dane, co eliminuje konieczność renderowania duplikatów.

IDataObject.GetData(FORMATETC, STGMEDIUM)

Uzyskuje dane z obiektu danych źródłowych. Metoda GetData(FORMATETC, STGMEDIUM) , która jest wywoływana przez konsumenta danych, renderuje dane opisane w określonej FORMATETC strukturze i przesyła je za pośrednictwem określonej STGMEDIUM struktury. Następnie wywołujący przejmuje odpowiedzialność za uwolnienie STGMEDIUM struktury.

IDataObject.GetDataHere(FORMATETC, STGMEDIUM)

Uzyskuje dane z obiektu danych źródłowych. Ta metoda, która jest wywoływana przez użytkownika danych, różni się od GetData(FORMATETC, STGMEDIUM) metody , w której obiekt wywołujący musi przydzielić i zwolnić określony nośnik magazynu.

IDataObject.QueryGetData(FORMATETC)

Określa, czy obiekt danych może renderować dane opisane w FORMATETC strukturze. Obiekty próbujące wykonać operację wklejania lub upuszczania mogą wywołać tę metodę przed wywołaniem metody GetData(FORMATETC, STGMEDIUM) w celu uzyskania wskazania, czy operacja może zakończyć się pomyślnie.

IDataObject.SetData(FORMATETC, STGMEDIUM, Boolean)

Transferuje dane do obiektu, który implementuje tę metodę. Ta metoda jest wywoływana przez obiekt, który zawiera źródło danych.

Dotyczy

Zobacz też