Clipboard.SetDataObject Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Limpa a Prancheta e depois adiciona dados a ela.
Sobrecargas
| Name | Description |
|---|---|
| SetDataObject(Object) |
Limpa a Área de Transferência e depois coloca nela dados não persistentes. |
| SetDataObject(Object, Boolean) |
Limpa a Área de Transferência e depois coloca os dados nela e especifica se os dados devem permanecer após a conclusão da aplicação. |
| SetDataObject(Object, Boolean, Int32, Int32) |
Limpa a Área de Transferência e depois tenta colocar os dados nela no número especificado de vezes e com o atraso especificado entre tentativas, deixando opcionalmente os dados na Área de Transferência após a conclusão da aplicação. |
SetDataObject(Object)
Limpa a Área de Transferência e depois coloca nela dados não persistentes.
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
Os dados para colocar na prancheta.
Exceções
Os dados não podiam ser colocados na Prancheta. Isto ocorre tipicamente quando a Prancheta está a ser usada por outro processo.
O tópico atual não está em modo apartamento single-threaded (STA). Adicione-os STAThreadAttribute ao processo da Main sua candidatura.
O valor de data é null.
Exemplos
O exemplo de código seguinte utiliza SetDataObject a colocação de dados de texto não persistentes na Área de Transferência do sistema. No button1_Click método, o texto selecionado é copiado e textBox1 colado na Área de Transferências. No button2_Click método, a informação é retirada da Área de Transferência e exibida em textBox2. Este código assume button1, button2, textBox1, e textBox2 foram criados e colocados num formulário.
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
Observações
Os dados serão eliminados da Prancheta de Transferência do sistema quando a aplicação sair.
Este método tenta definir os dados dez vezes em intervalos de 100 milissegundos, e lança um ExternalException caso se todas as tentativas não forem bem-sucedidas.
Note
Um objeto deve ser serializável para ser colocado na área de transferência. Se passar um objeto não serializável para este método, este falhará sem lançar uma exceção. Consulte System.Runtime.Serialization para mais informações sobre serialização.
A classe Clipboard só pode ser usada em threads configurados para o modo apartamento de thread único (modo STA). Para usar essa classe, verifique se o método Main está marcado com o atributo STAThreadAttribute.
Ver também
Aplica-se a
SetDataObject(Object, Boolean)
Limpa a Área de Transferência e depois coloca os dados nela e especifica se os dados devem permanecer após a conclusão da aplicação.
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
Os dados para colocar na prancheta.
- copy
- Boolean
true se quiser que os dados permaneçam na Prancheta após esta aplicação sair; caso contrário, false.
Exceções
Os dados não podiam ser colocados na Prancheta. Isto ocorre tipicamente quando a Prancheta está a ser usada por outro processo.
O tópico atual não está em modo apartamento single-threaded (STA). Adicione-os STAThreadAttribute ao processo da Main sua candidatura.
O valor de data é null.
Exemplos
O método seguinte é executado numa aplicação. Coloca uma cópia persistente dos dados de texto selecionados na caixa de texto do Clipboard do sistema. Este código assume button1, textBox1, e textBox2 foram criados e colocados num formulário.
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
Numa aplicação diferente, o método seguinte recupera o texto da Área de Transferência do sistema e cola o texto em textBox2. Este código assume button2 e textBox2 foram criados e colocados num formulário.
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
Observações
Se o copy parâmetro for false, os dados serão eliminados da Área de Transferência do sistema quando a aplicação sair.
Este método tenta definir os dados dez vezes em intervalos de 100 milissegundos, e lança um ExternalException caso se todas as tentativas não forem bem-sucedidas.
Note
Um objeto deve ser serializável para ser colocado na área de transferência. Se passar um objeto não serializável para este método, este falhará sem lançar uma exceção. Consulte System.Runtime.Serialization para mais informações sobre serialização.
A classe Clipboard só pode ser usada em threads configurados para o modo apartamento de thread único (modo STA). Para usar essa classe, verifique se o método Main está marcado com o atributo STAThreadAttribute.
Ver também
Aplica-se a
SetDataObject(Object, Boolean, Int32, Int32)
Limpa a Área de Transferência e depois tenta colocar os dados nela no número especificado de vezes e com o atraso especificado entre tentativas, deixando opcionalmente os dados na Área de Transferência após a conclusão da aplicação.
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
Os dados para colocar na prancheta.
- copy
- Boolean
true se quiser que os dados permaneçam na Prancheta após esta aplicação sair; caso contrário, false.
- retryTimes
- Int32
O número de vezes para tentar colocar os dados no Clipboard.
- retryDelay
- Int32
O número de milissegundos para pausar entre tentativas.
Exceções
O tópico atual não está em modo apartamento single-threaded (STA). Adicione-os STAThreadAttribute ao processo da Main sua candidatura.
data é null.
Os dados não podiam ser colocados na Prancheta. Isto ocorre tipicamente quando a Prancheta está a ser usada por outro processo.
Observações
Adicionar dados à Área de Transferência pode, por vezes, falhar se esta estiver ocupada com outra thread ou aplicação. Este método é útil para contornar este problema em ambientes com uso intensivo do Clipboard.
Se o copy parâmetro for false, os dados serão eliminados da Área de Transferência do sistema quando a aplicação sair.
Note
Um objeto deve ser serializável para ser colocado na área de transferência. Se passar um objeto não serializável para este método, este falhará sem lançar uma exceção. Consulte System.Runtime.Serialization para mais informações sobre serialização.
A classe Clipboard só pode ser usada em threads configurados para o modo apartamento de thread único (modo STA). Para usar essa classe, verifique se o método Main está marcado com o atributo STAThreadAttribute.