Esta documentación está archivada y no tiene mantenimiento.

Clipboard (Clase)

Proporciona métodos para colocar datos en el Portapapeles del sistema y recuperarlos. Esta clase no se puede heredar.

Espacio de nombres: System.Windows.Forms
Ensamblado: System.Windows.Forms (en system.windows.forms.dll)

public sealed class Clipboard
public final class Clipboard
public final class Clipboard
No aplicable.

Para obtener una lista de los formatos predefinidos que se usan con la clase Clipboard, vea la clase DataFormats.

Para colocar datos en el Portapapeles hay que llamar a SetDataObject. Si desea colocar una copia persistente de los datos en el Portapapeles, establezca el parámetro copy en true.

NotaNota:

Coloque los datos en el Portapapeles con varios formatos para aumentar al máximo la posibilidad de que una aplicación de destino, cuyos requisitos de formato quizás se desconozcan, pueda recuperar correctamente los datos.

Para recuperar datos del Portapapeles, hay que llamar a GetDataObject. Los datos se devuelven como un objeto que implementa la interfaz IDataObject. Se utilizan los métodos especificados por IDataObject y por los campos de DataFormats para extraer los datos del objeto. Si no conoce el formato de los datos recuperados, llame al método GetFormats de la interfaz IDataObject para obtener una lista de todos los formatos en los que se almacenan los datos. A continuación, llame al método GetData de la interfaz IDataObject y especifique un formato que pueda usar la aplicación.

En Microsoft .NET Framework versión 2.0, la clase Clipboard proporciona métodos adicionales que facilitan el trabajo con el Portapapeles de sistema. Llame al método Clear para quitar todos los datos del Portapapeles. Para agregar al Portapapeles datos con un formato concreto, llame al método SetFormat adecuado, como SetText, o llame al método SetData para especificar el formato. Para recuperar del Portapapeles datos con un formato concreto, llame en primer lugar al método ContainsFormat apropiado (como ContainsText) para determinar si el Portapapeles 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 el Portapapeles. En cambio, para especificar el formato en estas operaciones, llame a los métodos ContainsData y GetData.

NotaNota:

Todas las aplicaciones basadas en Windows comparten el Portapapeles del sistema, por lo que el contenido del mismo está sujeto a modificaciones cuando se cambia a otra aplicación.

Un objeto debe ser serializable para poder colocarlo en el Portapapeles. Si se pasa un objeto no serializable a un método de Portapapeles, el método dará error sin producir ninguna excepción. 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.

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

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.

Nota de la plataforma Windows Mobile 2003 para Pocket PC, Windows Mobile 2003 para Smartphone, Windows CE: En Windows CE, una secuencia de memoria pegada del Portapapeles puede tener un tamaño ligeramente mayor que la secuencia de memoria copiada en el Portapapeles, porque se pueden anexar bytes adicionales al final de la secuencia de memoria original. Para recuperar con precisión la secuencia de memoria se puede encabezar el objeto con su tamaño para determinar cómo recibirlo, o copiar un objeto DataObject al Portapapeles que contenga la secuencia de memoria y un valor de cadena con su tamaño.

En el ejemplo de código siguiente se utilizan los métodos de Clipboard para colocar datos en el Portapapeles del sistema y para recuperarlos. En este código, se supone que se han creado button1, button2, textBox1 y textBox2, y que se han colocado en el formulario.

El método button1_Click llama a SetDataObject para tomar el texto seleccionado del cuadro de texto y colocarlo en el Portapapeles del sistema.

El método button2_Click llama a GetDataObject para recuperar datos del Portapapeles del sistema. En el código, IDataObject y DataFormats se utilizan para extraer los datos devueltos, que se muestran en textBox2.

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 void button1_Click(Object sender, System.EventArgs e)
{
    // Takes the selected text from a text box and puts it on the clipboard.
    if (!textBox1.get_SelectedText().Equals("")) {
        Clipboard.SetDataObject(textBox1.get_SelectedText());
    }
    else {
        textBox2.set_Text("No text selected in textBox1");
    }
} //button1_Click

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.set_Text((String)(iData.GetData(DataFormats.Text)));
    }
    else {
        // No it is not.
        textBox2.set_Text("Could not retrieve data off the clipboard.");
    }
} //button2_Click

private function button1_Click(sender : Object, e : System.EventArgs) {
    //Take the selected text from a text box and put it on the clipboard.
    if(textBox1.SelectedText != "")
       Clipboard.SetDataObject(textBox1.SelectedText);
    else
       textBox2.Text = "No text selected in textBox1";
 }
 
 private function button2_Click(sender : Object, e : System.EventArgs) {
    //Declare an IDataObject to hold the data returned from the clipboard.
    //Then retrieve the data from the clipboard.
    var iData : IDataObject = Clipboard.GetDataObject();
 
    //Determine 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.";
    }
 }
 

System.Object
  System.Windows.Forms.Clipboard

Los miembros estáticos públicos (Shared en Visual Basic) 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 98, Windows 2000 Service Pack 4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter

Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.

.NET Framework

Compatible con: 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 2.0
Mostrar: