Поделиться через


Clipboard Класс

Определение

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

public ref class Clipboard sealed
public ref class Clipboard abstract sealed
public sealed class Clipboard
public static class Clipboard
type Clipboard = class
Public NotInheritable Class Clipboard
Public Class Clipboard
Наследование
Clipboard

Примеры

В следующем примере кода используются Clipboard методы для размещения данных и их извлечения из системного буфера обмена. В этом коде button1предполагается, что , button2, textBox1и textBox2 были созданы и помещены в форму.

Метод button1_Click вызывает SetDataObject для получения выделенного текста из текстового поля и его размещения в системном буфере обмена.

Метод button2_Click вызывает GetDataObject для получения данных из системного буфера обмена. Код использует IDataObject и DataFormats для извлечения возвращаемых данных и отображает данные в 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

Комментарии

Список стандартных форматов для использования с классом Clipboard см. в DataFormats разделе класс .

Вызовите SetDataObject , чтобы поместить данные в буфер обмена, заменив его текущее содержимое. Чтобы поместить постоянную копию данных в буфер обмена, задайте copy для параметра значение true.

Примечание

Чтобы поместить данные в буфер обмена в нескольких форматах, используйте DataObject класс или реализацию IDataObject . Поместите данные в буфер обмена в нескольких форматах, чтобы обеспечить максимальную вероятность того, что целевое приложение, требования к формату которого, возможно, не известны, сможет успешно получить данные.

Вызовите GetDataObject для получения данных из буфера обмена. Данные возвращаются в виде объекта, реализующего IDataObject интерфейс . Используйте методы, указанные полями IDataObject и в , DataFormats чтобы извлечь данные из объекта . Если вы не знаете формат полученных данных, вызовите GetFormats метод IDataObject интерфейса, чтобы получить список всех форматов, в которые хранятся данные. Затем вызовите GetData метод IDataObject интерфейса и укажите формат, который может использовать приложение.

В платформа .NET Framework 2.0 класс предоставляет дополнительные методы, Clipboard упрощающие работу с системным буфером обмена. Вызовите метод , Clear чтобы удалить все данные из буфера обмена. Чтобы добавить данные определенного формата в буфер обмена, заменив существующие данные, вызовите соответствующий Set метод Format, например SetText, или вызовите SetData метод , чтобы указать формат. Чтобы получить данные определенного формата из буфера обмена, сначала вызовите соответствующий Contains метод Format (напримерContainsText, ), чтобы определить, содержит ли буфер обмена данные в этом формате, а затем вызовите соответствующий Get метод Format (напримерGetText, ), чтобы получить данные, если буфер обмена содержит их. Чтобы указать формат в этих операциях, вызовите ContainsData вместо этого методы и GetData .

Примечание

Все приложения windows совместно используют системный буфер обмена, поэтому содержимое может измениться при переключении на другое приложение.

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

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

При использовании формата метафайла с буфером обмена могут потребоваться особые рекомендации. Из-за ограничений в текущей DataObject реализации класса формат метафайла, используемый платформа .NET Framework, может не распознаться приложениями, используюющими старый формат метафайла. В этом случае необходимо взаимодействовать с программными интерфейсами (API) буфера обмена Win32.

Методы

Clear()

Удаляет все данные из буфера обмена.

ContainsAudio()

Показывает, имеются ли в буфере обмена данные в формате WaveAudio.

ContainsData(String)

Указывает, имеются ли в буфере обмена данные в указанном формате и могут ли они быть преобразованы в этот формат.

ContainsFileDropList()

Указывает, имеются ли в буфере обмена данные в формате FileDrop и могут ли они быть преобразованы в этот формат.

ContainsImage()

Указывает, имеются ли в буфере обмена данные в формате Bitmap и могут ли они быть преобразованы в этот формат.

ContainsText()

Показывает, имеются ли в буфере обмена данные в формате Text или UnicodeText в зависимости от операционной системы.

ContainsText(TextDataFormat)

Показывает, имеются ли в буфере обмена текстовые данные в формате, указываемом заданным значением TextDataFormat.

GetAudioStream()

Получает аудиопоток из буфера обмена.

GetData(String)

Извлекает данные из буфера обмена в указанном формате.

GetDataObject()

Извлекает данные, которые находятся в данный момент в системном буфере обмена.

GetFileDropList()

Извлекает из буфера обмена коллекцию имен файлов.

GetImage()

Получает изображения из буфера обмена.

GetText()

В зависимости от операционной системы извлекает текстовые данные из буфера обмена в формате Text или UnicodeText.

GetText(TextDataFormat)

Извлекает текстовые данные из буфера обмена в формате, указанном заданным значением TextDataFormat.

SetAudio(Byte[])

Очищает буфер обмена и добавляет массив Byte в формате обмена в формате WaveAudio после его преобразования в Stream.

SetAudio(Stream)

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

SetData(String, Object)

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

SetDataObject(Object)

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

SetDataObject(Object, Boolean)

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

SetDataObject(Object, Boolean, Int32, Int32)

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

SetFileDropList(StringCollection)

Очищает буфер обмена и добавляет коллекцию имен файлов в формате FileDrop.

SetImage(Image)

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

SetText(String)

Очищает буфер обмена и добавляет и добавляет текстовые данныев формате Text или UnicodeText в зависимости от операционной системы.

SetText(String, TextDataFormat)

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

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

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