Clipboard ASP.NET C# : Получение скопированной информации из буфера обмена
В моей задаче нужно, чтобы по нажатию кнопки содержимое буфера было записано в TextBox. Буфер полон, но при попытке получить информацию я получаю System.NullReferenceException. Проверка функцией Clipboard.ContainsText() тоже говорит о том, что буфер обмена пуст (NO_BUFFER_DATA).
Мой код:
string GetBufferText()
{
System.Windows.Forms.IDataObject iData = System.Windows.Forms.Clipboard.GetDataObject();
if (iData.GetDataPresent(System.Windows.Forms.DataFormats.Text))
{
return iData.GetData(System.Windows.Forms.DataFormats.Text).ToString();
}
return "CANNOT_GET_DATA";
}
protected void btnBordFromBuff_Click(object sender, EventArgs e)
{
//Добавление текста в буфер (Проходит успешно)
Thread thread = new Thread(() => Clipboard.SetText(tbLink.Text));
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
//Вытягивание текста из буфера
if (Clipboard.ContainsText())
{
tbMinId.Text = GetBufferText();
tbMaxId.Text = GetBufferText();
}
else
{
tbMinId.Text = "NO_BUFFER_DATA";
tbMaxId.Text = "NO_BUFFER_DATA";
}
}
Как исправить код так, чтобы Clipboard обнаружил текст, хранящийся в буфере обмена?
Использование Clipboard.SetText(tbLink.Text) без потока дает ошибку System.Threading.ThreadStateException
Ответы (1 шт):
Как то вы все слишком усложнили и замешали в кучу. Тест в проекте WPF.NET Framework 4.7.2, обработчик вашей кнопки. Потоки вам точно не нужны(наверное вы тестировали в консоли,а там с вас требовали поток STA), если вы используете WPF, заче тянуть Clipboard из WinForm
private void btnBordFromBuff_Click(object sender, RoutedEventArgs e)
{
Clipboard.SetText(tbLink.Text);
if (Clipboard.ContainsText())
{
tbMinId.Text = Clipboard.GetText();
}
}