Compartilhar via


Clipboard.SetDataObject Método

Definição

Limpa a Área de Transferência e adiciona dados a ela.

Sobrecargas

SetDataObject(Object)

Limpa a Área de Transferência e, em seguida, coloca os dados não persistentes nela.

SetDataObject(Object, Boolean)

Limpa a área de transferência e, em seguida, coloca os dados nela e especifica se eles devem permanecer após o encerramento do aplicativo.

SetDataObject(Object, Boolean, Int32, Int32)

Limpa a Área de Transferência e, em seguida, tenta colocar os dados nela pelo número especificado de vezes e com o atraso especificado entre as tentativas, opcionalmente, deixando os dados na Área de Transferência depois de sair do aplicativo.

SetDataObject(Object)

Limpa a Área de Transferência e, em seguida, coloca os dados não persistentes nela.

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 a serem colocados na área de transferência.

Exceções

Não foi possível colocar os dados na área de transferência. Isso geralmente ocorre quando a Área de Transferência está sendo usada por outro processo.

O thread atual não está no modo STA (Single-Threaded Apartment). Adicione o STAThreadAttribute ao método Main do aplicativo.

O valor de data é null.

Exemplos

O exemplo de código a seguir usa SetDataObject para colocar dados de texto não persistentes na Área de Transferência do sistema. button1_Click No método, o texto selecionado é copiado textBox1 e colado na Área de Transferência. button2_Click No método, as informações são recuperadas da Área de Transferência e exibidas em textBox2. Esse código pressupõebutton1, button2``textBox1e textBox2 foi criado e colocado em um 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

Comentários

Os dados serão excluídos da Área de Transferência do sistema quando o aplicativo for encerrado.

Esse método tenta definir os dados dez vezes em intervalos de 100 milissegundos e lança um ExternalException se todas as tentativas não tiverem êxito.

Observação

Um objeto deve ser serializável para que seja colocado na Área de Transferência. Se você passar um objeto não serializável para esse método, ele falhará sem gerar uma exceção. Confira System.Runtime.Serialization mais informações sobre serialização.

A Clipboard classe só pode ser usada em threads definidos para o modo STA (apartamento de thread único). Para usar essa classe, verifique se o Main método está marcado com o STAThreadAttribute atributo.

Confira também

Aplica-se a

SetDataObject(Object, Boolean)

Limpa a área de transferência e, em seguida, coloca os dados nela e especifica se eles devem permanecer após o encerramento do aplicativo.

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 a serem colocados na área de transferência.

copy
Boolean

true se desejar que os dados permaneçam na área de transferência depois que esse aplicativo for encerrado, caso contrário, false.

Exceções

Não foi possível colocar os dados na área de transferência. Isso geralmente ocorre quando a Área de Transferência está sendo usada por outro processo.

O thread atual não está no modo STA (Single-Threaded Apartment). Adicione o STAThreadAttribute ao método Main do aplicativo.

O valor de data é null.

Exemplos

O método a seguir é executado em um aplicativo. Ele coloca uma cópia persistente dos dados de texto selecionados na caixa de texto na Área de Transferência do sistema. Esse código pressupõe button1, textBox1e textBox2 foram criados e colocados em um 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

Em um aplicativo diferente, o método a seguir recupera o texto da Área de Transferência do sistema e cola o texto em textBox2. Esse código pressupõe button2 e textBox2 foi criado e colocado em um 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

Comentários

Se o copy parâmetro for false, os dados serão excluídos da Área de Transferência do sistema quando o aplicativo for encerrado.

Esse método tenta definir os dados dez vezes em intervalos de 100 milissegundos e lança um ExternalException se todas as tentativas não tiverem êxito.

Observação

Um objeto deve ser serializável para que seja colocado na Área de Transferência. Se você passar um objeto não serializável para esse método, ele falhará sem gerar uma exceção. Confira System.Runtime.Serialization mais informações sobre serialização.

A Clipboard classe só pode ser usada em threads definidos para o modo STA (apartamento de thread único). Para usar essa classe, verifique se o Main método está marcado com o STAThreadAttribute atributo.

Confira também

Aplica-se a

SetDataObject(Object, Boolean, Int32, Int32)

Limpa a Área de Transferência e, em seguida, tenta colocar os dados nela pelo número especificado de vezes e com o atraso especificado entre as tentativas, opcionalmente, deixando os dados na Área de Transferência depois de sair do aplicativo.

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 a serem colocados na área de transferência.

copy
Boolean

true se desejar que os dados permaneçam na área de transferência depois que esse aplicativo for encerrado, caso contrário, false.

retryTimes
Int32

O número de tentativas para tentar colocar os dados na Área de Transferência.

retryDelay
Int32

O número de milissegundos para pausar entre as tentativas.

Exceções

O thread atual não está no modo STA (Single-Threaded Apartment). Adicione o STAThreadAttribute ao método Main do aplicativo.

data é null.

retryTimes é menor que zero.

- ou - retryDelay é menor que zero.

Não foi possível colocar os dados na área de transferência. Isso geralmente ocorre quando a Área de Transferência está sendo usada por outro processo.

Comentários

A adição de dados à Área de Transferência poderá falhar ocasionalmente se a Área de Transferência estiver ocupada com outro thread ou aplicativo. Esse método é útil para contornar esse problema em ambientes com uso pesado da Área de Transferência.

Se o copy parâmetro for false, os dados serão excluídos da Área de Transferência do sistema quando o aplicativo for encerrado.

Observação

Um objeto deve ser serializável para que seja colocado na Área de Transferência. Se você passar um objeto não serializável para esse método, ele falhará sem gerar uma exceção. Confira System.Runtime.Serialization mais informações sobre serialização.

A Clipboard classe só pode ser usada em threads definidos para o modo STA (apartamento de thread único). Para usar essa classe, verifique se o Main método está marcado com o STAThreadAttribute atributo.

Confira também

Aplica-se a