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 jest tworzony nowy DataObject , a składnik 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
W następnym przykładzie są pobierane dane przechowywane w obiekcie DataObject. Najpierw zostanie utworzony 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.
Element A DataObject jest zwykle używany z operacjami Clipboard przeciągania i upuszczania i w przypadku operacji przeciągania i upuszczania. Klasa DataObject zapewnia zalecaną implementację interfejsu IDataObject . Zaleca się użycie klasy zamiast implementacji DataObject IDataObject samodzielnie.
Wiele fragmentów danych w różnych formatach można przechowywać w obiekcie DataObject. Dane są pobierane z skojarzonego DataObject formatu. Ponieważ aplikacja docelowa może nie być znana, możesz zwiększyć prawdopodobieństwo, że dane będą w odpowiednim formacie aplikacji, umieszczając dane w DataObject wielu formatach. Zobacz, aby zapoznać się DataFormats 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 dodać w wielu formatach do tego samego DataObjectpliku . Jeśli chcesz, aby dane, które chcesz pobrać tylko w formacie natywnym, wywołaj polecenie SetData(String, Boolean, Object) z parametrem ustawionym na autoConvert
false
wartość .
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 GetData polecenie 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ą metodę Format (na przykład ContainsText) w celu ustalenia, czy DataObject dane zawierają dane w tym formacie, a następnie wywołaj odpowiednią Contains``Get
metodę Format (npGetText. ), aby pobrać dane, jeśli DataObject zawiera.
Uwaga
W przypadku używania 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. Aby uzyskać więcej informacji na temat serializacji, zobacz System.Runtime.Serialization . 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 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, które są w FileDrop formacie, czy można przekonwertować na ten format. |
ContainsImage() |
Wskazuje, czy obiekt danych zawiera dane, które są w Bitmap formacie, czy można 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 zautomatyzowanego parametru konwersji w celu określenia, 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 obiekcie są skojarzone z określonym formatem lub można je przekonwertować na. |
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(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 do których można je przekonwertować. |
GetFormats(Boolean) |
Zwraca listę wszystkich formatów, z którymi są skojarzone dane przechowywane w tym DataObject obiekcie lub można je przekonwertować przy użyciu parametru konwersji automatycznej w celu określenia, czy pobrać 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 określonym 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 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) |
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 porad. Ta metoda jest wywoływana przez obiekt, który obsługuje ujście porad i umożliwia ujściu porad powiadomienia o zmianach w danych obiektu. |
IDataObject.DUnadvise(Int32) |
Niszczy połączenie powiadomień, które zostało wcześniej nawiązane. |
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 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 zwracają te same dane, usuwając potrzebę zduplikowanego renderowania. |
IDataObject.GetData(FORMATETC, STGMEDIUM) |
Uzyskuje dane z obiektu danych źródłowych. Metoda GetData(FORMATETC, STGMEDIUM) , która jest wywoływana przez użytkownika danych, renderuje dane opisane w określonej strukturze i przesyła je przez określoną FORMATETC STGMEDIUM strukturę. Rozmówcy następnie 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. |