Sdílet prostřednictvím


DataObject Třída

Definice

Implementuje základní mechanismus přenosu dat.

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
Dědičnost
DataObject
Atributy
Implementuje

Příklady

Následující příklad kódu přidá data do DataObject. Nejprve se vytvoří nový DataObject objekt a uloží se do něj komponenta. Pak zkontroluje, jestli v objektu existují data příslušného DataObjecttypu. Výsledek se zobrazí v textovém poli. Tento kód vyžaduje, aby textBox1 byl vytvořen.

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

Další příklad načte data uložená v .DataObject Nejprve se vytvoří nový DataObject s textovými daty. Potom se data načtou, určí se jejich formát jako řetězec a zobrazí se v textovém poli. Formát dat se automaticky převede z textu na řetězec. Tento kód vyžaduje, aby textBox1 byl vytvořen.

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

Poznámky

DataObject implementuje IDataObject rozhraní, jehož metody poskytují mechanismus přenosu dat nezávislý na formátu.

A DataObject se obvykle používá s Clipboard a při operacích přetažení. Třída DataObject poskytuje doporučenou implementaci IDataObject rozhraní. Doporučujeme, abyste místo vlastní implementace IDataObject použili DataObject třídu .

Do souboru lze uložit DataObjectvíce dat v různých formátech. Data se načítají z objektu DataObject v přidruženém formátu. Vzhledem k tomu, že cílová aplikace nemusí být známa, můžete zvýšit pravděpodobnost, že data budou ve vhodném formátu pro aplikaci, a to umístěním dat do objektu DataObject ve více formátech. Informace o předdefinovaných formátech najdete v tématu DataFormats . Můžete implementovat vlastní formát vytvořením instance DataFormats.Format třídy .

Chcete-li uložit data v DataObject, předejte data konstruktoru nebo volejte SetData. Do stejného DataObjectmůžete přidat data ve více formátech. Pokud chcete, aby se data, která přidáte, načítala pouze v nativním formátu, volejte s SetData(String, Boolean, Object) parametrem nastaveným autoConvert na false.

Data je možné načíst z souboru DataObject v libovolném formátu, který je kompatibilní s GetData. Text lze například převést na kódování Unicode. Pokud chcete načíst data ve formátu, ve kterém byla uložena, volejte s GetData parametrem nastaveným autoConvert na false.

Pokud chcete zjistit, ve jakých formátech jsou data uložená, zavolejte .GetFormats Pokud chcete zjistit, jestli je k dispozici formát, zavolejte GetDataPresent s požadovaným formátem.

V rozhraní .NET Framework 2.0 třída poskytuje další metody, DataObject které usnadňují práci s daty v běžných formátech. Pokud chcete do DataObjectpřidat data určitého formátu, použijte příslušnou Set metodu Format, například SetText. Chcete-li načíst data určitého formátu z objektu DataObject, nejprve zavolejte příslušnou Contains metodu Format (například ContainsText), abyste zjistili, zda DataObject objekt obsahuje data v tomto formátu, a pak voláním příslušné Get metody Format (například GetText) načtěte data, pokud DataObject je obsahuje.

Poznámka

Při použití formátu metasouboru se schránkou můžou být potřeba vzít v úvahu zvláštní aspekty. Vzhledem k omezení v aktuální implementaci DataObject třídy formát metasouboru používaný rozhraním .NET Framework nemusí být rozpoznán aplikacemi, které používají starší formát metasouboru. V takovém případě musíte spolupracovat s aplikačními programovacími rozhraními (API) schránky Win32.

Objekt musí být serializovatelný, aby se dal umístit do schránky. Další informace o serializaci najdete v tématu System.Runtime.Serialization . Pokud vaše cílová aplikace vyžaduje velmi specifický formát dat, hlavičky přidané do dat v procesu serializace mohou zabránit aplikaci v rozpoznávání dat. Pokud chcete zachovat formát dat, přidejte data jako Byte pole do MemoryStream a předejte MemoryStream metodě SetData .

Konstruktory

DataObject()

Inicializuje novou instanci DataObject třídy .

DataObject(Object)

Inicializuje novou instanci DataObject třídy a přidá do ní zadaný objekt.

DataObject(String, Object)

Inicializuje novou instanci DataObject třídy a přidá zadaný objekt v zadaném formátu.

Metody

ContainsAudio()

Určuje, zda datový objekt obsahuje data ve WaveAudio formátu .

ContainsFileDropList()

Určuje, zda datový objekt obsahuje data, která jsou ve FileDrop formátu nebo lze převést na tento formát.

ContainsImage()

Určuje, zda datový objekt obsahuje data, která jsou ve Bitmap formátu nebo lze převést na tento formát.

ContainsText()

Určuje, zda datový objekt obsahuje data ve UnicodeText formátu .

ContainsText(TextDataFormat)

Určuje, zda datový objekt obsahuje textová data ve formátu určeném zadanou TextDataFormat hodnotou.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetAudioStream()

Načte zvukový stream z datového objektu.

GetData(String)

Vrátí data přidružená k zadanému formátu dat.

GetData(String, Boolean)

Vrátí data přidružená k zadanému formátu dat. Pomocí parametru automatizovaného převodu určí, zda se mají data převést do formátu.

GetData(Type)

Vrátí data přidružená k zadanému formátu typu třídy.

GetDataPresent(String)

Určuje, zda jsou data uložená v tomto DataObject souboru přidružena nebo zda mohou být převedena do zadaného formátu.

GetDataPresent(String, Boolean)

Určuje, zda obsahuje DataObject data v zadaném formátu, nebo volitelně data, která lze převést do zadaného formátu.

GetDataPresent(Type)

Určuje, zda jsou data uložená v tomto DataObject souboru přidružena nebo zda mohou být převedena do zadaného formátu.

GetFileDropList()

Načte kolekci názvů souborů z datového objektu.

GetFormats()

Vrátí seznam všech formátů, ke kterým jsou data uložená v tomto DataObject souboru přidružena nebo na které je možné je převést.

GetFormats(Boolean)

Vrátí seznam všech formátů, ke kterým jsou data uložená v této DataObject oblasti přidružena nebo na které lze převést, pomocí parametru automatického převodu určit, zda se mají načíst pouze nativní formáty dat nebo všechny formáty, na které lze data převést.

GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetImage()

Načte obrázek z datového objektu.

GetText()

Načte textová data z datového objektu UnicodeText ve formátu .

GetText(TextDataFormat)

Načte textová data z datového objektu ve formátu určeném zadanou TextDataFormat hodnotou.

GetType()

Type Získá z aktuální instance.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
SetAudio(Byte[])

Byte Přidá pole k datovému objektu WaveAudio ve formátu po jeho převodu Streamna objekt .

SetAudio(Stream)

Stream Přidá objekt do datového objektu WaveAudio ve formátu .

SetData(Object)

Přidá zadaný objekt do objektu DataObject s použitím typu objektu jako datového formátu.

SetData(String, Boolean, Object)

Přidá zadaný objekt do objektu DataObject pomocí zadaného formátu a určuje, zda lze data převést do jiného formátu.

SetData(String, Object)

Přidá zadaný objekt do objektu DataObject pomocí zadaného formátu.

SetData(Type, Object)

Přidá zadaný objekt do objektu DataObject s použitím zadaného typu jako formátu.

SetFileDropList(StringCollection)

Přidá kolekci názvů souborů do datového objektu FileDrop ve formátu .

SetImage(Image)

Image Přidá objekt do datového objektu Bitmap ve formátu .

SetText(String)

Přidá textová data do datového objektu UnicodeText ve formátu .

SetText(String, TextDataFormat)

Přidá textová data do datového objektu ve formátu označeném zadanou TextDataFormat hodnotou.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Explicitní implementace rozhraní

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

Vytvoří propojení mezi datovým objektem a jímkou poradce. Tato metoda je volána objektem, který podporuje poradní jímku a umožňuje, aby jímka poradce byla informována o změnách v datech objektu.

IDataObject.DUnadvise(Int32)

Zničí dříve navázané připojení oznámení.

IDataObject.EnumDAdvise(IEnumSTATDATA)

Vytvoří objekt, který lze použít k vytvoření výčtu aktuálních připojení poradce.

IDataObject.EnumFormatEtc(DATADIR)

Vytvoří objekt pro výčet FORMATETC struktur datového objektu. Tyto struktury se používají ve voláních nebo GetData(FORMATETC, STGMEDIUM)SetData(FORMATETC, STGMEDIUM, Boolean).

IDataObject.GetCanonicalFormatEtc(FORMATETC, FORMATETC)

Poskytuje standardní FORMATETC strukturu, která je logicky ekvivalentní složitější struktuře. Tuto metodu použijte k určení, zda by dvě různé FORMATETC struktury vrátily stejná data, čímž se odstraní potřeba duplicitního vykreslování.

IDataObject.GetData(FORMATETC, STGMEDIUM)

Získá data ze zdrojového datového objektu. Metoda GetData(FORMATETC, STGMEDIUM) , kterou volá příjemce dat, vykreslí data popsaná v zadané FORMATETC struktuře a přenese je přes zadanou STGMEDIUM strukturu. Volající pak převezme odpovědnost za uvolnění STGMEDIUM struktury.

IDataObject.GetDataHere(FORMATETC, STGMEDIUM)

Získá data ze zdrojového datového objektu. Tato metoda, která je volána příjemcem dat, se liší od metody v tom GetData(FORMATETC, STGMEDIUM) , že volající musí přidělit a uvolnit zadané paměťové médium.

IDataObject.QueryGetData(FORMATETC)

Určuje, zda je datový objekt schopen vykreslovat data popsaná ve struktuře FORMATETC . Objekty, které se pokoušejí o operaci vložení nebo odstranění, mohou před voláním GetData(FORMATETC, STGMEDIUM) volat tuto metodu, aby získaly informace o tom, zda operace může být úspěšná.

IDataObject.SetData(FORMATETC, STGMEDIUM, Boolean)

Přenese data do objektu, který implementuje tuto metodu. Tato metoda je volána objektem, který obsahuje zdroj dat.

Platí pro

Viz také