Clipboard.SetDataObject Método

Definición

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

Sobrecargas

Nombre Description
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 los datos en él y especifica si los datos deben permanecer después de que 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 de veces especificado y con el retraso especificado entre los intentos, dejando opcionalmente los datos en el Portapapeles después de que se cierre 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 pudieron colocar los datos en el Portapapeles. Esto suele ocurrir cuando otro proceso usa el Portapapeles.

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

El valor de data es null.

Ejemplos

En el ejemplo de código siguiente se usan 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, 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 );
      }
      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 un ExternalException si todos los intentos no son correctos.

Note

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 configurados en el modo de apartamento de subproceso único (STA). Para usar esta clase, asegúrese de que el Main 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 los datos en él y especifica si los datos deben permanecer después de que 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 desea que los datos permanezcan en el Portapapeles después de que se cierre esta aplicación; de lo contrario, false.

Excepciones

No se pudieron colocar los datos en el Portapapeles. Esto suele ocurrir cuando otro proceso usa el Portapapeles.

El subproceso actual no está en modo de apartamento de un solo subproceso (STA). Agregue al STAThreadAttribute método de la Main 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 asume 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 un ExternalException si todos los intentos no son correctos.

Note

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 configurados en el modo de apartamento de subproceso único (STA). Para usar esta clase, asegúrese de que el Main 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 de veces especificado y con el retraso especificado entre los intentos, dejando opcionalmente los datos en el Portapapeles después de que se cierre 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 desea que los datos permanezcan en el Portapapeles después de que se cierre esta aplicación; de lo contrario, false.

retryTimes
Int32

Número de veces que se intentan colocar los datos en el Portapapeles.

retryDelay
Int32

Número de milisegundos que se pausan entre intentos.

Excepciones

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

data es null.

retryTimes es menor que cero.

O bien

retryDelay es menor que cero.

No se pudieron colocar los datos en el Portapapeles. Esto suele ocurrir cuando otro proceso usa 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 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.

Note

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 configurados en el modo de apartamento de subproceso único (STA). Para usar esta clase, asegúrese de que el Main método está marcado con el STAThreadAttribute atributo .

Consulte también

Se aplica a