Evaluar y enviar comentarios
Contraer todo/Expandir todo Contraer todo
Esta página es específica de
Microsoft Visual Studio 2008/.NET Framework 3.5

Hay además otras versiones disponibles para:
Biblioteca de clases de .NET Framework
DataObject (Clase)

Actualización: noviembre 2007

Implementa un mecanismo básico de transferencia de datos.

Espacio de nombres:  System.Windows.Forms
Ensamblado:  System.Windows.Forms (en System.Windows.Forms.dll)
Visual Basic (Declaración)
<ClassInterfaceAttribute(ClassInterfaceType.None)> _
Public Class DataObject _
    Implements IDataObject, IDataObject
Visual Basic (Uso)
Dim instance As DataObject
C#
[ClassInterfaceAttribute(ClassInterfaceType.None)]
public class DataObject : IDataObject, IDataObject
Visual C++
[ClassInterfaceAttribute(ClassInterfaceType::None)]
public ref class DataObject : IDataObject, 
    IDataObject
J#
/** @attribute ClassInterfaceAttribute(ClassInterfaceType.None) */
public class DataObject implements IDataObject, 
    IDataObject
JScript
public class DataObject implements IDataObject, IDataObject

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.

03sh0yf9.alert_note(es-es,VS.90).gifNota:

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.

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

Visual Basic
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 'AddMyData3

C#
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";
 }
Visual C++
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" );
      }
   }
J#
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.set_Text("Data of type " + myType.ToString() 
            + " is present in the DataObject");
    }
    else {
        textBox1.set_Text("Data of type " + myType.ToString() 
            + " is not present in the DataObject");
    }
} //AddMyData3

El ejemplo siguiente recupera los datos almacenados en un objeto DataObject. En primer lugar, se crea un nuevo objeto DataObject con datos de texto. A continuación, se recuperan los datos, especificando 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 se haya creado textBox1.

Visual Basic
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("System.String").ToString()
End Sub 'GetMyData2
C#
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("System.String").ToString();
 }
Visual C++
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( "System.String" )->ToString();
}
J#
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.set_Text(myDataObject.GetData("System.String").ToString());
} //GetMyData2
System..::.Object
  System.Windows.Forms..::.DataObject
Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile para Smartphone, Windows Mobile para Pocket PC

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 3.5, 2.0
Contenido de la comunidad   ¿Qué es Community Content?
Agregar contenido nuevo RSS  Anotaciones
Processing
© 2012 Microsoft. Reservados todos los derechos. Términos de uso | Marcas Registradas | Privacidad
Page view tracker