Condividi tramite


DataObject Classe

Definizione

Implementa un meccanismo di trasferimento dati di base.

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
Ereditarietà
DataObject
Attributi
Implementazioni

Esempio

Nell'esempio di codice seguente vengono aggiunti dati in un oggetto DataObject. Prima di tutto, viene creato un nuovo DataObject oggetto e ne viene archiviato un componente. Verifica quindi se i dati nel tipo appropriato sono presenti in DataObject. Il risultato viene visualizzato in una casella di testo. Questo codice richiede che textBox1 sia stato creato.

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

Nell'esempio seguente vengono recuperati i dati archiviati in un oggetto DataObject. Prima di tutto, viene creato un nuovo DataObject oggetto con dati di testo. I dati vengono quindi recuperati, specificandone il formato come stringa e visualizzati in una casella di testo. Il formato dei dati viene convertito automaticamente da testo a stringa. Questo codice richiede che textBox1 sia stato creato.

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

Commenti

DataObject implementa l'interfaccia IDataObject , i cui metodi forniscono un meccanismo indipendente dal formato per il trasferimento dei dati.

Un DataObject oggetto viene in genere usato con e Clipboard nelle operazioni di trascinamento della selezione. La DataObject classe fornisce l'implementazione consigliata dell'interfaccia IDataObject . È consigliabile usare la DataObject classe anziché implementare IDataObject manualmente.

È possibile archiviare più parti di dati in formati diversi in un oggetto DataObject. I dati vengono recuperati da un DataObject oggetto in base al formato associato. Poiché l'applicazione di destinazione potrebbe non essere nota, è possibile aumentare la probabilità che i dati siano nel formato appropriato per un'applicazione inserendo i dati in un DataObject oggetto in più formati. Vedere DataFormats per i formati predefiniti. È possibile implementare un formato personalizzato creando un'istanza della DataFormats.Format classe .

Per archiviare i dati in un DataObjectoggetto , passare i dati al costruttore o chiamare SetData. È possibile aggiungere dati in più formati allo stesso DataObjectoggetto . Se si desidera che i dati aggiunti vengano recuperati solo nel formato nativo, chiamare SetData(String, Boolean, Object) con il autoConvert parametro impostato su false.

I dati possono essere recuperati da un DataObject oggetto in qualsiasi formato compatibile con GetData. Ad esempio, il testo può essere convertito in Unicode. Per recuperare i dati nel formato in cui è stato archiviato, chiamare GetData con il autoConvert parametro impostato su false.

Per determinare i formati in cui vengono archiviati i dati, chiamare GetFormats. Per determinare se è disponibile un formato, chiamare GetDataPresent con il formato desiderato.

In .NET Framework 2.0 la DataObject classe fornisce metodi aggiuntivi che semplificano l'uso dei dati in formati comuni. Per aggiungere dati di un formato specifico a DataObject, utilizzare il metodo Format appropriatoSet, ad esempio SetText. Per recuperare i dati di un formato specifico da DataObject, chiamare innanzitutto il metodo Format appropriato (ad esempio ContainsText) per determinare se DataObject contiene dati in tale formato, quindi chiamare il metodo Format appropriato GetContains (ad esempio GetText) per recuperare i dati se DataObject contiene.

Nota

Quando si usa il formato metafile con gli Appunti, possono essere necessarie considerazioni speciali. A causa di una limitazione nell'implementazione corrente della DataObject classe, il formato metafile usato da .NET Framework potrebbe non essere riconosciuto dalle applicazioni che usano un formato metafile meno recente. In questo caso, è necessario interagire con le API (Application Programming Interface) win32 Clipboard.

Un oggetto deve essere serializzabile affinché venga inserito negli Appunti. Per altre informazioni sulla serializzazione, vedere System.Runtime.Serialization . Se l'applicazione di destinazione richiede un formato di dati molto specifico, le intestazioni aggiunte ai dati nel processo di serializzazione potrebbero impedire all'applicazione di riconoscere i dati. Per mantenere il formato dei dati, aggiungere i dati come Byte matrice a e MemoryStream passare al MemoryStreamSetData metodo .

Costruttori

DataObject()

Inizializza una nuova istanza della classe DataObject.

DataObject(Object)

Inizializza una nuova istanza della classe DataObject a cui viene aggiunto l'oggetto specificato.

DataObject(String, Object)

Inizializza una nuova istanza della classe DataObject a cui viene aggiunto l'oggetto specificato nel formato specificato.

Metodi

ContainsAudio()

Indica se l'oggetto dati contiene dati nel formato WaveAudio.

ContainsFileDropList()

Indica se l'oggetto dati contiene dati nel formato FileDrop o che possano essere convertiti in tale formato.

ContainsImage()

Indica se l'oggetto dati contiene dati nel formato Bitmap o che possano essere convertiti in tale formato.

ContainsText()

Indica se l'oggetto dati contiene dati nel formato UnicodeText.

ContainsText(TextDataFormat)

Indica se l'oggetto dati contiene dati di testo nel formato indicato dal valore TextDataFormat specificato.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetAudioStream()

Recupera un flusso audio dall'oggetto dati.

GetData(String)

Restituisce i dati associati con il formato dati specificato.

GetData(String, Boolean)

Restituisce i dati associati al formato specificato, usando un parametro di conversione automatica per stabilire se convertirli nel formato.

GetData(Type)

Restituisce i dati associati al formato del tipo di classe specificato.

GetDataPresent(String)

Determina se i dati memorizzati in questa classe DataObject sono associati al formato specificato o possono essere convertiti in tale formato.

GetDataPresent(String, Boolean)

Determina se questa classe DataObject contiene dati nel formato specificato o, facoltativamente, contiene i dati che possono essere convertiti nel formato specificato.

GetDataPresent(Type)

Determina se i dati memorizzati in questa classe DataObject sono associati al formato specificato o possono essere convertiti in tale formato.

GetFileDropList()

Recupera un insieme di nomi di file dall'oggetto dati.

GetFormats()

Restituisce un elenco di tutti i formati ai quali sono associati i dati memorizzati in questa classe DataObject o nei quali possono essere convertiti.

GetFormats(Boolean)

Restituisce un elenco di tutti i formati ai quali sono associati i dati memorizzati in questa classe DataObject o nei quali possono essere convertiti, utilizzando un parametro di conversione automatica per determinare se recuperare tutti quelli in cui i dati possono essere convertiti oppure solo i formati nativi.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetImage()

Recupera un'immagine dall'oggetto dati.

GetText()

Recupera dati di testo dall'oggetto dati nel formato UnicodeText.

GetText(TextDataFormat)

Recupera dati di testo dall'oggetto dati nel formato indicato dal valore TextDataFormat specificato.

GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
SetAudio(Byte[])

Aggiunge una matrice Byte all'oggetto dati nel formato WaveAudio dopo la loro conversione nella classe Stream.

SetAudio(Stream)

Aggiunge una classe Stream all'oggetto dati nel formato WaveAudio.

SetData(Object)

Aggiunge l'oggetto specificato alla classe DataObject utilizzando il tipo di oggetto come formato dei dati.

SetData(String, Boolean, Object)

Aggiunge l'oggetto specificato alla classe DataObject utilizzando il formato specificato e indicando se i dati possono essere convertiti in un altro formato.

SetData(String, Object)

Aggiunge l'oggetto specificato alla classe DataObject utilizzando il formato specificato.

SetData(Type, Object)

Aggiunge l'oggetto specificato alla classe DataObject utilizzando il tipo specificato come formato.

SetFileDropList(StringCollection)

Aggiunge un insieme di nomi di file all'oggetto dati nel formato FileDrop.

SetImage(Image)

Aggiunge una classe Image all'oggetto dati nel formato Bitmap.

SetText(String)

Aggiunge dati di testo all'oggetto dati nel formato UnicodeText.

SetText(String, TextDataFormat)

Aggiunge dati di testo all'oggetto dati nel formato indicato dal valore TextDataFormat specificato.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

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

Crea una connessione tra un oggetto dati e un sink consultivo. Questo metodo viene chiamato da un oggetto che supporta un sink consultivo e abilita tale sink per ricevere una notifica delle modifiche nei dati dell'oggetto.

IDataObject.DUnadvise(Int32)

Elimina definitivamente una connessione di notifica stabilita in precedenza.

IDataObject.EnumDAdvise(IEnumSTATDATA)

Crea un oggetto che può essere usato per enumerare le connessioni consultive correnti.

IDataObject.EnumFormatEtc(DATADIR)

Crea un oggetto per l'enumerazione delle strutture FORMATETC per un oggetto dati. Queste strutture sono utilizzate nelle chiamate al metodo GetData(FORMATETC, STGMEDIUM) o SetData(FORMATETC, STGMEDIUM, Boolean).

IDataObject.GetCanonicalFormatEtc(FORMATETC, FORMATETC)

Fornisce una struttura FORMATETC standard logicamente equivalente a una struttura più complessa. Utilizzare questo metodo per determinare se due strutture FORMATETC diverse restituiscono gli stessi dati, eliminando la necessità di rendering duplicati.

IDataObject.GetData(FORMATETC, STGMEDIUM)

Ottiene i dati da un oggetto dati di origine. Il metodo GetData(FORMATETC, STGMEDIUM), chiamato da un consumer di dati, esegue il rendering dei dati descritti nella struttura FORMATETC specificata e li trasferisce mediante la struttura STGMEDIUM specificata. Il chiamante si assume la responsabilità del rilascio della struttura STGMEDIUM.

IDataObject.GetDataHere(FORMATETC, STGMEDIUM)

Ottiene i dati da un oggetto dati di origine. Questo metodo, chiamato da un consumer di dati, si differenzia dal metodo GetData(FORMATETC, STGMEDIUM) in quanto il chiamante deve allocare e liberare il supporto di archiviazione specificato.

IDataObject.QueryGetData(FORMATETC)

Determina se l'oggetto dati è in grado di eseguire il rendering dei dati descritti nella struttura FORMATETC. Gli oggetti che tentano un'operazione di inserimento o rilascio possono chiamare questo metodo prima di chiamare GetData(FORMATETC, STGMEDIUM) per ottenere indicazioni relative alla riuscita dell'operazione.

IDataObject.SetData(FORMATETC, STGMEDIUM, Boolean)

Trasferisce i dati all'oggetto che implementa il metodo. Questo metodo viene chiamato da un oggetto contenente un'origine dati.

Si applica a

Vedi anche