Clipboard.SetDataObject Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
, 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, 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
.
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 .