Clipboard.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, button2textBox1и 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 исключение, если все попытки неудачны.
Note
Класс Clipboard можно использовать только в потоках, настроенных на режим однопотоковой модели (STA). Чтобы использовать этот класс, убедитесь, что метод Main помечен атрибутом STAThreadAttribute.