Comparteix a través de


Clipboard.SetDataObject Método

Definición

Borra el Portapapeles y, a continuación, le agrega datos.

Sobrecargas

SetDataObject(Object)

Borra el Portapapeles y, a continuación, coloca datos no persistentes en él.

SetDataObject(Object, Boolean)

Borra el Portapapeles y, a continuación, coloca datos en él y especifica si deben permanecer cuando se cierre la aplicación.

SetDataObject(Object, Boolean, Int32, Int32)

Borra el Portapapeles y, a continuación, intenta colocar datos en él el número especificado de veces y con la demora determinada entre cada intento y, opcionalmente, deja los datos en el Portapapeles después de cerrar la aplicación.

SetDataObject(Object)

Borra el Portapapeles y, a continuación, coloca datos no persistentes en él.

public:
 static void SetDataObject(System::Object ^ data);
public static void SetDataObject (object data);
static member SetDataObject : obj -> unit
Public Shared Sub SetDataObject (data As Object)

Parámetros

data
Object

Datos que se van a colocar en el Portapapeles.

Excepciones

No se han podido colocar datos en el Portapapeles. Esto ocurre normalmente cuando otro proceso utiliza el Portapapeles.

El subproceso actual no está en el modo de contenedor uniproceso (STA). Agregue STAThreadAttribute al método Main de la aplicación.

El valor de data es null.

Ejemplos

En el ejemplo de código siguiente se usa SetDataObject para colocar datos de texto no persistentes en el Portapapeles del sistema. En el button1_Click método , el texto seleccionado se copia y textBox1 pega en el Portapapeles. En el button2_Click método , la información se recupera del Portapapeles y se muestra en textBox2. Este código supone que button1, button2``textBox1, y textBox2 se han creado y colocado en un formulario.

private:
   void button1_Click( Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      // Takes the selected text from a text box and puts it on the clipboard.
      if ( !textBox1->SelectedText->Equals( "" ) )
      {
         Clipboard::SetDataObject( textBox1->SelectedText );
      }
      else
      {
         textBox2->Text = "No text selected in textBox1";
      }
   }

   void button2_Click( Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      // Declares an IDataObject to hold the data returned from the clipboard.
      // Retrieves the data from the clipboard.
      IDataObject^ iData = Clipboard::GetDataObject();
      
      // Determines whether the data is in a format you can use.
      if ( iData->GetDataPresent( DataFormats::Text ) )
      {
         // Yes it is, so display it in a text box.
         textBox2->Text = (String^)(iData->GetData( DataFormats::Text ));
      }
      else
      {
         // No it is not.
         textBox2->Text = "Could not retrieve data off the clipboard.";
      }
   }
private void button1_Click(object sender, System.EventArgs e) {
    // Takes the selected text from a text box and puts it on the clipboard.
    if(textBox1.SelectedText != "")
       Clipboard.SetDataObject(textBox1.SelectedText);
    else
       textBox2.Text = "No text selected in textBox1";
 }
 
 private void button2_Click(object sender, System.EventArgs e) {
    // Declares an IDataObject to hold the data returned from the clipboard.
    // Retrieves the data from the clipboard.
    IDataObject iData = Clipboard.GetDataObject();
 
    // Determines whether the data is in a format you can use.
    if(iData.GetDataPresent(DataFormats.Text)) {
       // Yes it is, so display it in a text box.
       textBox2.Text = (String)iData.GetData(DataFormats.Text); 
    }
    else {
       // No it is not.
       textBox2.Text = "Could not retrieve data off the clipboard.";
    }
 }
Private Sub button1_Click(sender As Object, e As System.EventArgs)
    ' Takes the selected text from a text box and puts it on the clipboard.
    If textBox1.SelectedText <> "" Then
        Clipboard.SetDataObject(textBox1.SelectedText)
    Else
        textBox2.Text = "No text selected in textBox1"
    End If
End Sub
 
Private Sub button2_Click(sender As Object, e As System.EventArgs)
    ' Declares an IDataObject to hold the data returned from the clipboard.
    ' Retrieves the data from the clipboard.
    Dim iData As IDataObject = Clipboard.GetDataObject()
    
    ' Determines whether the data is in a format you can use.
    If iData.GetDataPresent(DataFormats.Text) Then
        ' Yes it is, so display it in a text box.
        textBox2.Text = CType(iData.GetData(DataFormats.Text), String)
    Else
        ' No it is not.
        textBox2.Text = "Could not retrieve data off the clipboard."
    End If
End Sub

Comentarios

Los datos se eliminarán del Portapapeles del sistema cuando se cierre la aplicación.

Este método intenta establecer los datos diez veces en intervalos de 100 milisegundos y produce si ExternalException todos los intentos no se realizan correctamente.

Nota

Un objeto debe ser serializable para que se coloque en el Portapapeles. Si pasa un objeto no serializable a este método, se producirá un error sin iniciar una excepción. Consulte System.Runtime.Serialization para obtener más información sobre la serialización.

La Clipboard clase solo se puede usar en subprocesos establecidos en modo de apartamento de subproceso único (STA). Para usar esta clase, asegúrese de que Main el método está marcado con el STAThreadAttribute atributo .

Consulte también

Se aplica a

SetDataObject(Object, Boolean)

Borra el Portapapeles y, a continuación, coloca datos en él y especifica si deben permanecer cuando se cierre la aplicación.

public:
 static void SetDataObject(System::Object ^ data, bool copy);
public static void SetDataObject (object data, bool copy);
static member SetDataObject : obj * bool -> unit
Public Shared Sub SetDataObject (data As Object, copy As Boolean)

Parámetros

data
Object

Datos que se van a colocar en el Portapapeles.

copy
Boolean

true si se desea que los datos permanezcan almacenados en el Portapapeles cuando se cierre la aplicación; de lo contrario false.

Excepciones

No se han podido colocar datos en el Portapapeles. Esto ocurre normalmente cuando otro proceso utiliza el Portapapeles.

El subproceso actual no está en el modo de contenedor uniproceso (STA). Agregue STAThreadAttribute al método Main de la aplicación.

El valor de data es null.

Ejemplos

El método siguiente se ejecuta en una aplicación. Coloca una copia persistente de los datos de texto seleccionados en el cuadro de texto del Portapapeles del sistema. Este código supone que button1, textBox1y textBox2 se han creado y colocado en un formulario.

private:
   void button1_Click( Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      // Takes the selected text from a text box and puts it on the clipboard.
      if ( !textBox1->SelectedText->Equals( "" ) )
      {
         Clipboard::SetDataObject( textBox1->SelectedText, true );
      }
      else
      {
         textBox2->Text = "No text selected in textBox1";
      }
   }
private void button1_Click(object sender, System.EventArgs e) {
    // Takes the selected text from a text box and puts it on the clipboard.
    if(textBox1.SelectedText != "")
       Clipboard.SetDataObject(textBox1.SelectedText, true);
    else
       textBox2.Text = "No text selected in textBox1";
 }
Private Sub button1_Click(sender As Object, e As System.EventArgs)
    ' Takes the selected text from a text box and puts it on the clipboard.
    If textBox1.SelectedText <> "" Then
        Clipboard.SetDataObject(textBox1.SelectedText, True)
    Else
        textBox2.Text = "No text selected in textBox1"
    End If
End Sub

En otra aplicación, el método siguiente recupera el texto del Portapapeles del sistema y pega el texto en textBox2. Este código supone button2 y textBox2 se ha creado y colocado en un formulario.

private:
   void button2_Click( Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      // Declares an IDataObject to hold the data returned from the clipboard.
      // Retrieves the data from the clipboard.
      IDataObject^ iData = Clipboard::GetDataObject();
      
      // Determines whether the data is in a format you can use.
      if ( iData->GetDataPresent( DataFormats::Text ) )
      {
         
         // Yes it is, so display it in a text box.
         textBox2->Text = (String^)(iData->GetData( DataFormats::Text ));
      }
      else
      {
         
         // No it is not.
         textBox2->Text = "Could not retrieve data off the clipboard.";
      }
   }
private void button2_Click(object sender, System.EventArgs e) {
    // Declares an IDataObject to hold the data returned from the clipboard.
    // Retrieves the data from the clipboard.
    IDataObject iData = Clipboard.GetDataObject();
 
    // Determines whether the data is in a format you can use.
    if(iData.GetDataPresent(DataFormats.Text)) {
       // Yes it is, so display it in a text box.
       textBox2.Text = (String)iData.GetData(DataFormats.Text); 
    }
    else {
       // No it is not.
       textBox2.Text = "Could not retrieve data off the clipboard.";
    }
 }
Private Sub button2_Click(sender As Object, e As System.EventArgs)
    ' Declares an IDataObject to hold the data returned from the clipboard.
    ' Retrieves the data from the clipboard.
    Dim iData As IDataObject = Clipboard.GetDataObject()
    
    ' Determines whether the data is in a format you can use.
    If iData.GetDataPresent(DataFormats.Text) Then
        ' Yes it is, so display it in a text box.
        textBox2.Text = CType(iData.GetData(DataFormats.Text), String)
    Else
        ' No it is not.
        textBox2.Text = "Could not retrieve data off the clipboard."
    End If
End Sub

Comentarios

Si el copy parámetro es false, los datos se eliminarán del Portapapeles del sistema cuando se cierre la aplicación.

Este método intenta establecer los datos diez veces en intervalos de 100 milisegundos y produce si ExternalException todos los intentos no se realizan correctamente.

Nota

Un objeto debe ser serializable para que se coloque en el Portapapeles. Si pasa un objeto no serializable a este método, se producirá un error sin iniciar una excepción. Consulte System.Runtime.Serialization para obtener más información sobre la serialización.

La Clipboard clase solo se puede usar en subprocesos establecidos en modo de apartamento de subproceso único (STA). Para usar esta clase, asegúrese de que Main el método está marcado con el STAThreadAttribute atributo .

Consulte también

Se aplica a

SetDataObject(Object, Boolean, Int32, Int32)

Borra el Portapapeles y, a continuación, intenta colocar datos en él el número especificado de veces y con la demora determinada entre cada intento y, opcionalmente, deja los datos en el Portapapeles después de cerrar la aplicación.

public:
 static void SetDataObject(System::Object ^ data, bool copy, int retryTimes, int retryDelay);
public static void SetDataObject (object data, bool copy, int retryTimes, int retryDelay);
static member SetDataObject : obj * bool * int * int -> unit
Public Shared Sub SetDataObject (data As Object, copy As Boolean, retryTimes As Integer, retryDelay As Integer)

Parámetros

data
Object

Datos que se van a colocar en el Portapapeles.

copy
Boolean

true si se desea que los datos permanezcan almacenados en el Portapapeles cuando se cierre la aplicación; de lo contrario false.

retryTimes
Int32

Número de veces que se va a intentar colocar los datos en el Portapapeles.

retryDelay
Int32

Número de milisegundos de pausa entre los intentos.

Excepciones

El subproceso actual no está en el modo de contenedor uniproceso (STA). Agregue STAThreadAttribute al método Main de la aplicación.

data es null.

retryTimes es menor que cero.

O bien retryDelay es menor que cero.

No se han podido colocar datos en el Portapapeles. Esto ocurre normalmente cuando otro proceso utiliza el Portapapeles.

Comentarios

La adición de datos al Portapapeles puede producir un error ocasionalmente si el Portapapeles está ocupado con otro subproceso o aplicación. Este método es útil para solucionar este problema en entornos con un uso intensivo del Portapapeles.

Si el copy parámetro es false, los datos se eliminarán del Portapapeles del sistema cuando se cierre la aplicación.

Nota

Un objeto debe ser serializable para que se coloque en el Portapapeles. Si pasa un objeto no serializable a este método, se producirá un error sin iniciar una excepción. Consulte System.Runtime.Serialization para obtener más información sobre la serialización.

La Clipboard clase solo se puede usar en subprocesos establecidos en modo de apartamento de subproceso único (STA). Para usar esta clase, asegúrese de que Main el método está marcado con el STAThreadAttribute atributo .

Consulte también

Se aplica a