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 .