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
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 zostanie utworzony nowy DataObject element i zostanie w nim zapisany składnik. 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

W następnym przykładzie są pobierane dane przechowywane w obiekcie DataObject. Najpierw zostanie utworzony nowy DataObject przy użyciu danych tekstowych. 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 w Clipboard operacjach przeciągania i upuszczania. Klasa DataObject udostępnia zalecaną implementację interfejsu IDataObject . Zaleca się, aby używać DataObject klasy, a nie implementować IDataObject siebie.

Wiele fragmentów danych w różnych formatach można przechowywać w obiekcie DataObject. Dane są pobierane ze skojarzonego DataObject formatu. Ponieważ aplikacja docelowa może nie być znana, możesz 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 dodane dane są pobierane tylko w formacie natywnym, wywołaj SetData(String, Boolean, Object) metodę z parametrem ustawionym autoConvert na falsewartość .

Dane można pobrać z DataObject dowolnego formatu zgodnego z GetDataprogramem . Na przykład tekst można przekonwertować na Unicode. Aby pobrać dane w formacie, w którym były przechowywane, wywołaj GetData metodę 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.

Klasa DataObject 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 ContainsTextprzykład ), aby określić, czy DataObject dane zawierają dane w tym formacie, a następnie wywołaj odpowiednią Get metodę Format (npGetText. ), aby pobrać dane, jeśli DataObject zawiera.

Note

Podczas korzystania z formatu metapliku ze Schowkiem mogą być konieczne specjalne zagadnienia. Ze względu na ograniczenie w bieżącej implementacji klasy DataObject format metapliku używany przez platformę .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 określonego 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ż element MemoryStream do SetData metody .

Konstruktory

Nazwa Opis
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

Nazwa Opis
ContainsAudio()

Wskazuje, czy obiekt danych zawiera dane w WaveAudio formacie.

ContainsFileDropList()

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

ContainsImage()

Wskazuje, czy obiekt danych zawiera dane w Bitmap formacie, czy można go 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, Boolean)

Zwraca dane skojarzone z określonym formatem danych przy użyciu zautomatyzowanego parametru konwersji w celu określenia, czy przekonwertować dane na format.

GetData(String)

Zwraca dane skojarzone z określonym formatem danych.

GetData(Type)

Zwraca dane skojarzone z określonym formatem typu klasy.

GetDataPresent(String, Boolean)

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

GetDataPresent(String)

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

GetDataPresent(Type)

Określa, czy dane przechowywane w tym DataObject obiekcie 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 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()

Pobiera Type bieżącego wystąpienia.

(Odziedziczone po Object)
MemberwiseClone()

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

(Odziedziczone po Object)
SetAudio(Byte[])

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

SetAudio(Stream)

Dodaje element 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 element Image do obiektu danych w Bitmap formacie .

SetText(String, TextDataFormat)

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

SetText(String)

Dodaje dane tekstowe do obiektu danych w UnicodeText formacie .

ToString()

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

(Odziedziczone po Object)

Jawne implementacje interfejsu

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

Tworzy połączenie między obiektem danych a ujściem porady. Ta metoda jest wywoływana przez obiekt, który obsługuje ujście porady 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 do 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, usuwając potrzebę renderowania zduplikowanego.

IDataObject.GetData(FORMATETC, STGMEDIUM)

Uzyskuje dane z obiektu danych źródłowych. Metoda GetData(FORMATETC, STGMEDIUM) , która jest wywoływana przez odbiorcę danych, renderuje dane opisane w określonej strukturze i przesyła je za pośrednictwem określonej FORMATETCSTGMEDIUM 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, 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 GetData(FORMATETC, STGMEDIUM) metody 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ż