Clipboard.GetDataObject Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Извлекает данные, которые находятся в данный момент в системном буфере обмена.
public:
static System::Windows::Forms::IDataObject ^ GetDataObject();
public static System.Windows.Forms.IDataObject GetDataObject ();
public static System.Windows.Forms.IDataObject? GetDataObject ();
static member GetDataObject : unit -> System.Windows.Forms.IDataObject
Public Shared Function GetDataObject () As IDataObject
Возвращаемое значение
Объект IDataObject, представляющий данные, находящиеся в буфере обмена, или значение null
, если в буфере обмена данные отсутствуют.
Исключения
Данные невозможно извлечь из буфера обмена. Обычно это происходит, когда буфер обмена используется другим процессом.
Текущий поток не выполняется в режиме апартмента с одним потоком (STA), и значение свойства MessageLoop равно true
. Добавьте STAThreadAttribute в метод Main
своего приложения.
Примеры
В следующем примере кода используются 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
Комментарии
Так как тип данных объекта, возвращаемого из буфера обмена, может отличаться, этот метод возвращает данные в объекте IDataObject. Затем можно использовать методы IDataObject интерфейса для извлечения данных в соответствующем типе данных.
Этот метод пытается получить данные десять раз в 100-миллисекундных интервалах и выдает исключение ExternalException , если все попытки неуспешны.
Примечание
Класс Clipboard можно использовать только в потоках, для работы в режиме однопотокового подразделения (STA). Чтобы использовать этот класс, убедитесь, что Main
метод помечен атрибутом STAThreadAttribute .