DataObject implementa la interfaz IDataObject, cuyos métodos proporcionan un mecanismo independiente del formato para la transferencia de datos.
Suele utilizarse un objeto DataObject con el Portapapeles del sistema (Clipboard) y en las operaciones de arrastrar y colocar. La clase DataObject proporciona la implementación recomendada de la interfaz IDataObject. Se recomienda utilizar la clase DataObject en vez de implementar IDataObject uno mismo.
En DataObject se pueden almacenar múltiples fragmentos de datos con formatos diferentes. Los datos se recuperan de DataObject por su formato asociado. Debido a que es posible que no se conozca la aplicación de destino, puede aumentar la posibilidad de que los datos tengan el formato apropiado para una aplicación, colocando dichos datos en un objeto DataObject con varios formatos. Vea DataFormats para obtener los formatos predefinidos. Se puede implementar nuestro propio formato creando una instancia de la clase DataFormats..::.Format.
Para almacenar datos en DataObject, pase los datos al constructor o llame a SetData. Se pueden agregar datos de varios formatos al mismo DataObject. Si se desea que los datos agregados se recuperen sólo en su formato nativo, llame a SetData(String, Boolean, Object) con el parámetro autoConvert establecido en false.
Pueden recuperarse datos de un objeto DataObject en cualquier formato compatible con GetData. Por ejemplo, se puede convertir texto a Unicode. Para recuperar datos en el formato en que se almacenaron, hay que llamar a GetData con el parámetro autoConvert establecido en false.
Para determinar en qué formatos se almacenan los datos, hay que llamar a GetFormats. Para determinar si un formato está disponible, hay que llamar a GetDataPresent con el formato deseado.
En .NET Framework versión 2.0, la clase DataObject proporciona métodos adicionales que facilitan el trabajo con datos en formatos comunes. Para agregar datos de un formato determinado a DataObject, utilice el método SetFormat adecuado, como SetText. Para recuperar datos con un formato concreto de DataObject, llame en primer lugar al método ContainsFormat apropiado (como ContainsText) para determinar si DataObject contiene datos con ese formato y, a continuación, llame al correspondiente método GetFormat (como GetText) para recuperar los datos si están en DataObject.
Nota: |
|---|
Al utilizar el formato de metarchivo con el Portapapeles, pueden ser necesarias consideraciones especiales. Debido a una limitación de la implementación actual de la clase DataObject, es posible que las aplicaciones que utilicen un formato de metarchivo antiguo no reconozcan el formato de metarchivo que usa .NET Framework. En este caso, deberá interactuar con las interfaces de programación de aplicaciones (API) de Portapapeles de Win32. Para obtener más información, consulte el artículo 323530, "Metafiles on Clipboard Are Not Visible to All Applications" de Microsoft Knowledge Base, en la dirección http://support.microsoft.com. Un objeto debe ser serializable para poder colocarlo en el Portapapeles. Para obtener más información sobre la serialización, vea Serialización. Si la aplicación de destino requiere un formato de datos muy concreto, los encabezados que se agregan a los datos en el proceso de serialización pueden provocar que la aplicación no reconozca los datos. Para conservar el formato de sus datos, agréguelos como una matriz de Byte a un objeto MemoryStream y pase ese objeto MemoryStream al método SetData. |