Comparteix a través de


DataObject Clase

Definición

Implementa un mecanismo básico de transferencia de datos.

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
Herencia
DataObject
Atributos
Implementaciones

Ejemplos

En el ejemplo de código siguiente se agregan datos en .DataObject En primer lugar, se crea un nuevo DataObject y se almacena un componente en él. A continuación, comprueba si existen datos en el tipo adecuado en .DataObject El resultado se muestra en un cuadro de texto. Este código requiere que textBox1 se haya creado.

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

En el ejemplo siguiente se recuperan los datos almacenados en .DataObject En primer lugar, se crea un nuevo DataObject con datos de texto. A continuación, los datos se recuperan, especifican su formato como una cadena y se muestran en un cuadro de texto. El formato de datos se convierte automáticamente de texto a cadena. Este código requiere que textBox1 se haya creado.

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

Comentarios

DataObject implementa la IDataObject interfaz , cuyos métodos proporcionan un mecanismo independiente del formato para la transferencia de datos.

DataObject Normalmente se usa con las operaciones de Clipboard arrastrar y colocar. La DataObject clase proporciona la implementación recomendada de la IDataObject interfaz . Se recomienda usar la DataObject clase en lugar de implementarse IDataObject usted mismo.

Varios fragmentos de datos en distintos formatos se pueden almacenar en .DataObject Los datos se recuperan de un DataObject objeto mediante su formato asociado. Dado que es posible que no se conozca la aplicación de destino, puede aumentar la probabilidad de que los datos estén en el formato adecuado para una aplicación colocando los datos en un DataObject en varios formatos. Consulte DataFormats para conocer los formatos predefinidos. Puede implementar su propio formato creando una instancia de la DataFormats.Format clase .

Para almacenar datos en , DataObjectpase los datos al constructor o llame SetDataa . Puede agregar datos en varios formatos al mismo DataObject. Si desea que los datos que agregue se recuperen solo en su formato nativo, llame a SetData(String, Boolean, Object) con el autoConvert parámetro establecido en false.

Los datos se pueden recuperar de en DataObject cualquier formato que sea compatible con GetData. Por ejemplo, el texto se puede convertir en Unicode. Para recuperar datos en el formato en el que se almacenó, llame a GetData con el autoConvert parámetro establecido falseen .

Para determinar en qué formatos se almacenan los datos, llame a GetFormats. Para determinar si hay un formato disponible, llame a GetDataPresent con el formato deseado.

En .NET Framework 2.0, la DataObject clase proporciona métodos adicionales que facilitan el trabajo con datos en formatos comunes. Para agregar datos de un formato determinado a DataObject, use el método Format adecuadoSet, como SetText. Para recuperar datos de un formato determinado de DataObject, primero llame al método Format adecuado Contains (por ContainsTextejemplo, ) para determinar si DataObject contiene datos en ese formato y, a continuación, llame al método Format adecuado Get (por GetTextejemplo, ) para recuperar los datos si lo DataObject contiene.

Nota

Es posible que sea necesario tener en cuenta consideraciones especiales al usar el formato de metarchivo con el Portapapeles. Debido a una limitación en la implementación actual de la DataObject clase , es posible que las aplicaciones que usen un formato de metarchivo antiguo no reconozcan el formato de metarchivo usado por .NET Framework. En este caso, debe interoperar con las interfaces de programación de aplicaciones de Portapapeles win32 (API).

Para poder colocarse en el Portapapeles, un objeto debe ser serializable. Consulte System.Runtime.Serialization para obtener más información sobre la serialización. Si la aplicación de destino requiere un formato de datos muy específico, los encabezados agregados a los datos del proceso de serialización pueden impedir que la aplicación reconozca los datos. Para conservar el formato de datos, agregue los datos como una Byte matriz a MemoryStream y pase al MemoryStreamSetData método .

Constructores

DataObject()

Inicializa una nueva instancia de la clase DataObject.

DataObject(Object)

Inicializa una nueva instancia de la clase DataObject, a la que agrega el objeto especificado.

DataObject(String, Object)

Inicializa una nueva instancia de la clase DataObject, a la que agrega el objeto especificado con el formato indicado.

Métodos

ContainsAudio()

Indica si el objeto de datos contiene datos con formato WaveAudio.

ContainsFileDropList()

Indica si el objeto de datos contiene datos con formato FileDrop o que se puedan pueden convertir a ese formato.

ContainsImage()

Indica si el objeto de datos contiene datos con formato Bitmap o que se puedan pueden convertir a ese formato.

ContainsText()

Indica si el objeto de datos contiene datos con formato UnicodeText.

ContainsText(TextDataFormat)

Indica si el objeto de datos contiene datos de texto en el formato que indica el valor de TextDataFormat especificado.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetAudioStream()

Recupera una secuencia de audio del objeto de datos.

GetData(String)

Devuelve los datos asociados con el formato de datos especificado.

GetData(String, Boolean)

Devuelve los datos asociados con el formato de datos especificado, utilizando un parámetro de conversión automatizada para determinar si se deben convertir los datos a dicho formato.

GetData(Type)

Devuelve los datos asociados con el formato de tipo de clase especificado.

GetDataPresent(String)

Determina si los datos almacenados en este objeto DataObject están asociados al formato especificado o se pueden convertir al mismo.

GetDataPresent(String, Boolean)

Determina si este objeto DataObject contiene datos con el formato especificado u, opcionalmente, si contiene datos que se pueden convertir al formato especificado.

GetDataPresent(Type)

Determina si los datos almacenados en este objeto DataObject están asociados al formato especificado o se pueden convertir al mismo.

GetFileDropList()

Recupera una colección de nombres de archivo del objeto de datos.

GetFormats()

Devuelve una lista de todos los formatos a los que se asocian o a los que se pueden convertir los datos almacenados en este objeto DataObject.

GetFormats(Boolean)

Devuelve una lista con todos los formatos a los que están asociados o se pueden convertir los datos almacenados en este objeto DataObject, utilizando un parámetro de conversión automática para determinar si se van a recuperar sólo los formatos de datos nativos o todos los formatos a los que se puedan convertir los datos.

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetImage()

Recupera una imagen del objeto de datos.

GetText()

Recupera datos de texto del objeto de datos con el formato UnicodeText.

GetText(TextDataFormat)

Recupera datos de texto del objeto de datos con el formato que indica el valor de TextDataFormat especificado.

GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
SetAudio(Byte[])

Agrega al objeto de datos una matriz de Byte con el formato WaveAudio tras su conversión a Stream.

SetAudio(Stream)

Agrega un objeto Stream al objeto de datos, con el formato WaveAudio.

SetData(Object)

Agrega el objeto especificado a DataObject utilizando el tipo de objeto como formato de datos.

SetData(String, Boolean, Object)

Agrega el objeto determinado a DataObject utilizando el formato especificado e indicando si los datos se pueden convertir a otro formato.

SetData(String, Object)

Agrega el objeto determinado a DataObject utilizando el formato especificado.

SetData(Type, Object)

Agrega el objeto especificado a DataObject utilizando como formato el tipo del objeto.

SetFileDropList(StringCollection)

Agrega una colección de nombres de archivo al objeto de datos, con el formato FileDrop.

SetImage(Image)

Agrega un objeto Image al objeto de datos, con el formato Bitmap.

SetText(String)

Agrega datos de texto al objeto de datos, con el formato UnicodeText.

SetText(String, TextDataFormat)

Agrega datos de texto al objeto de datos, con el formato que indica el valor de TextDataFormat especificado.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Implementaciones de interfaz explícitas

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

Crea una conexión entre un objeto de datos y un receptor de consulta. Este método es invocado por un objeto que admite un receptor de consulta y permite que a dicho receptor se le notifiquen los cambios realizados en los datos del objeto.

IDataObject.DUnadvise(Int32)

Destruye una conexión de notificación que se había establecido previamente.

IDataObject.EnumDAdvise(IEnumSTATDATA)

Crea un objeto que se puede utilizar para enumerar las conexiones de consulta actuales.

IDataObject.EnumFormatEtc(DATADIR)

Crea un objeto para enumerar las estructuras FORMATETC para un objeto de datos. Estas estructuras se utilizan en llamadas a los métodos GetData(FORMATETC, STGMEDIUM) o SetData(FORMATETC, STGMEDIUM, Boolean).

IDataObject.GetCanonicalFormatEtc(FORMATETC, FORMATETC)

Proporciona una estructura FORMATETC estándar que equivale lógicamente a una estructura más compleja. Utilice este método para determinar si dos estructuras FORMATETC diferentes devolverían los mismos datos, eliminando la necesidad de una representación duplicada.

IDataObject.GetData(FORMATETC, STGMEDIUM)

Obtiene los datos de un objeto de datos de origen. El método GetData(FORMATETC, STGMEDIUM), que es invocado por un consumidor de datos, representa los datos descritos en la estructura FORMATETC especificada y los transfiere a través de la estructura STGMEDIUM especificada. A continuación, el llamador asume la responsabilidad de liberar la estructura STGMEDIUM.

IDataObject.GetDataHere(FORMATETC, STGMEDIUM)

Obtiene los datos de un objeto de datos de origen. Este método, que es invocado por un consumidor de datos, se diferencia del método GetData(FORMATETC, STGMEDIUM) en que el llamador debe asignar y liberar el medio de almacenamiento especificado.

IDataObject.QueryGetData(FORMATETC)

Determina si el objeto de datos es capaz de representar los datos descritos en la estructura FORMATETC. Los objetos que intentan una operación de pegar o colocar pueden llamar a este método antes de llamar a GetData(FORMATETC, STGMEDIUM) para obtener una indicación de si la operación puede tener éxito.

IDataObject.SetData(FORMATETC, STGMEDIUM, Boolean)

Transfiere los datos al objeto que implementa este método. Este método es invocado por un objeto que contiene un origen de datos.

Se aplica a

Consulte también