Бөлісу құралы:


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, button2``textBox1и 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 исключение, если все попытки неудачны.

Примечание

Объект должен быть сериализуемым, чтобы он был помещен в буфер обмена. Если передать несериализируемый объект этому методу, он завершится ошибкой, не вызывая исключения. Дополнительные сведения о сериализации см 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.

Примеры

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

Примечание

Объект должен быть сериализуемым, чтобы он был помещен в буфер обмена. Если передать несериализируемый объект этому методу, он завершится ошибкой, не вызывая исключения. Дополнительные сведения о сериализации см 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, данные будут удалены из системного буфера обмена при выходе приложения.

Примечание

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

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

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

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