-1

В моей задаче нужно, чтобы по нажатию кнопки содержимое буфера было записано в 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

  • 2
  • Почему стоит метка [asp net-mvc]? 2. Зачем используете Thread? 3. Почему в WPF проекте используется WinForms?
  • – EvgeniyZ Oct 10 '20 at 10:31
  • @EvgeniyZ Ага, тоже взрыв мозга и когнитивный диссонанс. – A K Oct 10 '20 at 10:35
  • В какой строке я получаю System.NullReferenceException? А то у вас может Clipboard == null. – A K Oct 10 '20 at 10:37
  • 2
    Конкретно на ваш вопрос ответ таков: вы запускаете поток, но не дожидаетесь его завершения и сразу проверяете clipboard. Он пуст, т. к. код в потоке ещё не отработал. – Alexander Petrov Oct 10 '20 at 11:10
  • Если вам что-то непонятно - спросите под ответом, не плодите дубликаты вопроса. – A K Oct 10 '20 at 14:30
  • Исправил некорректные метки. – GeekProgrammer Oct 10 '20 at 14:32
  • А какой смысл в буфере обмена, у WEB проекта, который рассчитан быть сервером? Что вы там копировать-то собрались? – EvgeniyZ Oct 10 '20 at 15:04