Udostępnij za pośrednictwem


Clipboard.SetDataObject Metoda

Definicja

Czyści Schowek, a następnie dodaje do niego dane.

Przeciążenia

SetDataObject(Object)

Czyści Schowek, a następnie umieszcza na nim dane niepersistentne.

SetDataObject(Object, Boolean)

Czyści Schowek, a następnie umieszcza na nim dane i określa, czy dane powinny pozostać po zakończeniu działania aplikacji.

SetDataObject(Object, Boolean, Int32, Int32)

Czyści Schowek, a następnie próbuje umieścić na nim dane o określonej liczbie i z określonym opóźnieniem między próbami, opcjonalnie pozostawiając dane w Schowku po zakończeniu działania aplikacji.

SetDataObject(Object)

Czyści Schowek, a następnie umieszcza na nim dane niepersistentne.

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)

Parametry

data
Object

Dane do umieszczenia w Schowku.

Wyjątki

Nie można umieścić danych w Schowku. Zwykle dzieje się tak, gdy Schowek jest używany przez inny proces.

Bieżący wątek nie jest w trybie jednowątkowy (STA). Dodaj element STAThreadAttribute do metody aplikacji Main .

Wartość to data null.

Przykłady

Poniższy przykład kodu używa SetDataObject metody do umieszczania danych tekstowych niepersistentnych w schowku systemowym. W metodzie button1_Click zaznaczony tekst jest kopiowany i textBox1 wklejany w Schowku. W metodzie button2_Click informacje są pobierane ze Schowka i wyświetlane w textBox2pliku . W tym kodzie przyjęto założenie button1, że element , button2, textBox1i textBox2 został utworzony i umieszczony w formularzu.

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

Uwagi

Dane zostaną usunięte ze schowka systemowego po zakończeniu działania aplikacji.

Ta metoda próbuje ustawić dane dziesięć razy w 100-milisekundowych interwałach i zgłasza błąd ExternalException , jeśli wszystkie próby nie powiedzą się.

Uwaga

Obiekt musi być serializowalny, aby można go było umieścić w Schowku. Jeśli przekażesz obiekt, który nie można serializować do tej metody, zakończy się niepowodzeniem bez zgłaszania wyjątku. Zobacz System.Runtime.Serialization , aby uzyskać więcej informacji na temat serializacji.

Klasę Clipboard można używać tylko w wątkach ustawionych na tryb apartamentów pojedynczego wątku (STA). Aby użyć tej klasy, upewnij się, że metoda Main jest oznaczona atrybutem STAThreadAttribute .

Zobacz też

Dotyczy

SetDataObject(Object, Boolean)

Czyści Schowek, a następnie umieszcza na nim dane i określa, czy dane powinny pozostać po zakończeniu działania aplikacji.

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)

Parametry

data
Object

Dane do umieszczenia w Schowku.

copy
Boolean

true jeśli chcesz, aby dane pozostały w Schowku po zakończeniu działania tej aplikacji; w przeciwnym razie , false.

Wyjątki

Nie można umieścić danych w Schowku. Zwykle dzieje się tak, gdy Schowek jest używany przez inny proces.

Bieżący wątek nie jest w trybie jednowątkowy (STA). Dodaj element STAThreadAttribute do metody aplikacji Main .

Wartość to data null.

Przykłady

Następująca metoda jest uruchamiana w aplikacji. Umieszcza on trwałą kopię zaznaczonych danych tekstowych w polu tekstowym w schowku systemowym. W tym kodzie przyjęto założenie button1, że element , textBox1i textBox2 został utworzony i umieszczony w formularzu.

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

W innej aplikacji poniższa metoda pobiera tekst ze schowka systemowego i wkleja tekst do textBox2elementu . Ten kod zakłada button2 i textBox2 został utworzony i umieszczony w formularzu.

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

Uwagi

copy Jeśli parametr ma falsewartość , dane zostaną usunięte ze schowka systemowego po zakończeniu działania aplikacji.

Ta metoda próbuje ustawić dane dziesięć razy w 100-milisekundowych interwałach i zgłasza błąd ExternalException , jeśli wszystkie próby nie powiedzą się.

Uwaga

Obiekt musi być serializowalny, aby można go było umieścić w Schowku. Jeśli przekażesz obiekt, który nie można serializować do tej metody, zakończy się niepowodzeniem bez zgłaszania wyjątku. Zobacz System.Runtime.Serialization , aby uzyskać więcej informacji na temat serializacji.

Klasę Clipboard można używać tylko w wątkach ustawionych na tryb apartamentów pojedynczego wątku (STA). Aby użyć tej klasy, upewnij się, że metoda Main jest oznaczona atrybutem STAThreadAttribute .

Zobacz też

Dotyczy

SetDataObject(Object, Boolean, Int32, Int32)

Czyści Schowek, a następnie próbuje umieścić na nim dane o określonej liczbie i z określonym opóźnieniem między próbami, opcjonalnie pozostawiając dane w Schowku po zakończeniu działania aplikacji.

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)

Parametry

data
Object

Dane do umieszczenia w Schowku.

copy
Boolean

true jeśli chcesz, aby dane pozostały w Schowku po zakończeniu działania tej aplikacji; w przeciwnym razie , false.

retryTimes
Int32

Liczba prób umieszczenia danych w Schowku.

retryDelay
Int32

Liczba milisekund do wstrzymania między próbami.

Wyjątki

Bieżący wątek nie jest w trybie jednowątkowy (STA). Dodaj element STAThreadAttribute do metody aplikacji Main .

data to null.

Parametr retryTimes ma wartość niższą niż zero.

-lub- Parametr retryDelay ma wartość niższą niż zero.

Nie można umieścić danych w Schowku. Zwykle dzieje się tak, gdy Schowek jest używany przez inny proces.

Uwagi

Dodawanie danych do Schowka może czasami zakończyć się niepowodzeniem, jeśli Schowek jest zajęty innym wątkiem lub aplikacją. Ta metoda jest przydatna do obejścia tego problemu w środowiskach z dużym użyciem Schowka.

copy Jeśli parametr ma falsewartość , dane zostaną usunięte ze schowka systemowego po zakończeniu działania aplikacji.

Uwaga

Obiekt musi być serializowalny, aby można go było umieścić w Schowku. Jeśli przekażesz obiekt, który nie można serializować do tej metody, zakończy się niepowodzeniem bez zgłaszania wyjątku. Zobacz System.Runtime.Serialization , aby uzyskać więcej informacji na temat serializacji.

Klasę Clipboard można używać tylko w wątkach ustawionych na tryb apartamentów pojedynczego wątku (STA). Aby użyć tej klasy, upewnij się, że metoda Main jest oznaczona atrybutem STAThreadAttribute .

Zobacz też

Dotyczy