DataObject Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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) | |
| 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. |