Clipboard.SetDataObject Метод

Определение

Очищает буфер обмена и добавляет в него данные.

Перегрузки

Имя Описание
SetDataObject(Object)

Очищает буфер обмена, а затем помещает в него неперсистентные данные.

SetDataObject(Object, Boolean)

Очищает буфер обмена, а затем помещает данные в него и указывает, должны ли данные оставаться после завершения работы приложения.

SetDataObject(Object, Boolean, Int32, Int32)

Очищает буфер обмена, а затем пытается поместить данные в указанное количество раз и с указанной задержкой между попытками, при необходимости оставляя данные в буфере обмена после выхода приложения.

SetDataObject(Object)

Очищает буфер обмена, а затем помещает в него неперсистентные данные.

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)

Параметры

data
Object

Данные для размещения в буфере обмена.

Исключения

Данные не удалось поместить в буфер обмена. Обычно это происходит, когда буфер обмена используется другим процессом.

Текущий поток не находится в режиме однопоточной квартиры (STA). Добавьте его в STAThreadAttribute метод приложения Main .

Значение data равно null.

Примеры

В следующем примере кода используется SetDataObject для размещения неперсистентных текстовых данных в системном буфере обмена. В методе выделенный button1_Click текст копируется и textBox1 вставляется в буфер обмена. В методе button2_Click данные извлекаются из буфера обмена и отображаются в textBox2. Этот код предполагает button1, button2textBox1и 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->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

Комментарии

Данные будут удалены из системного буфера обмена при выходе приложения.

Этот метод пытается задать данные десять раз в 100-миллисекундах интервалов и вызывает исключение ExternalException , если все попытки неудачны.

Note

Объект должен быть сериализуемым, чтобы его можно было поместить в буфер обмена. Если вы передаете несериализуемый объект этому методу, он завершится ошибкой, не вызывая исключения. Дополнительные сведения о сериализации см. в статье System.Runtime.Serialization о сериализации.

Класс Clipboard можно использовать только в потоках, настроенных на режим однопотоковой модели (STA). Чтобы использовать этот класс, убедитесь, что метод Main помечен атрибутом STAThreadAttribute.

См. также раздел

Применяется к

SetDataObject(Object, Boolean)

Очищает буфер обмена, а затем помещает данные в него и указывает, должны ли данные оставаться после завершения работы приложения.

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)

Параметры

data
Object

Данные для размещения в буфере обмена.

copy
Boolean

true Значение , если вы хотите, чтобы данные оставались в буфере обмена после завершения работы этого приложения; falseв противном случае .

Исключения

Данные не удалось поместить в буфер обмена. Обычно это происходит, когда буфер обмена используется другим процессом.

Текущий поток не находится в режиме однопоточной квартиры (STA). Добавьте его в STAThreadAttribute метод приложения Main .

Значение data равно null.

Примеры

Следующий метод выполняется в приложении. Он помещает постоянную копию выделенных текстовых данных в текстовое поле в системном буфере обмена. Этот код предполагает button1textBox1создание и 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->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

В другом приложении следующий метод извлекает текст из системного буфера обмена и вставляет текст в textBox2. Этот код предполагает button2 создание и textBox2 размещение в форме.

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

Комментарии

copy Если параметр имеет значениеfalse, данные будут удалены из системного буфера обмена при выходе приложения.

Этот метод пытается задать данные десять раз в 100-миллисекундах интервалов и вызывает исключение ExternalException , если все попытки неудачны.

Note

Объект должен быть сериализуемым, чтобы его можно было поместить в буфер обмена. Если вы передаете несериализуемый объект этому методу, он завершится ошибкой, не вызывая исключения. Дополнительные сведения о сериализации см. в статье System.Runtime.Serialization о сериализации.

Класс Clipboard можно использовать только в потоках, настроенных на режим однопотоковой модели (STA). Чтобы использовать этот класс, убедитесь, что метод Main помечен атрибутом STAThreadAttribute.

См. также раздел

Применяется к

SetDataObject(Object, Boolean, Int32, Int32)

Очищает буфер обмена, а затем пытается поместить данные в указанное количество раз и с указанной задержкой между попытками, при необходимости оставляя данные в буфере обмена после выхода приложения.

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)

Параметры

data
Object

Данные для размещения в буфере обмена.

copy
Boolean

true Значение , если вы хотите, чтобы данные оставались в буфере обмена после завершения работы этого приложения; falseв противном случае .

retryTimes
Int32

Количество попыток размещения данных в буфере обмена.

retryDelay
Int32

Количество миллисекунда для приостановки между попытками.

Исключения

Текущий поток не находится в режиме однопоточной квартиры (STA). Добавьте его в STAThreadAttribute метод приложения Main .

data равно null.

retryTimes меньше нуля.

–или–

retryDelay меньше нуля.

Данные не удалось поместить в буфер обмена. Обычно это происходит, когда буфер обмена используется другим процессом.

Комментарии

Добавление данных в буфер обмена может иногда завершиться ошибкой, если буфер обмена занят другим потоком или приложением. Этот метод полезен для обхода этой проблемы в средах с интенсивным использованием буфера обмена.

copy Если параметр имеет значениеfalse, данные будут удалены из системного буфера обмена при выходе приложения.

Note

Объект должен быть сериализуемым, чтобы его можно было поместить в буфер обмена. Если вы передаете несериализуемый объект этому методу, он завершится ошибкой, не вызывая исключения. Дополнительные сведения о сериализации см. в статье System.Runtime.Serialization о сериализации.

Класс Clipboard можно использовать только в потоках, настроенных на режим однопотоковой модели (STA). Чтобы использовать этот класс, убедитесь, что метод Main помечен атрибутом STAThreadAttribute.

См. также раздел

Применяется к