Как скопировать данные в буфер обмена в C # - PullRequest
383 голосов
/ 23 августа 2010

Как я могу скопировать строку (например, "привет") в системный буфер обмена в C #, поэтому в следующий раз, когда я нажму CTRL + V , я получу "привет"?

Ответы [ 4 ]

726 голосов
/ 23 августа 2010

Вам потребуется объявление пространства имен:

using System.Windows.Forms;

ИЛИ для WPF:

using System.Windows;

Чтобы скопировать точную строку (в данном случае, литерал):

Clipboard.SetText("Hello, clipboard");

Чтобы скопировать содержимое текстового поля:

Clipboard.SetText(txtClipboard.Text);

См. Здесь пример .Или ... Официальная документация MSDN или Здесь для WPF .

42 голосов
/ 23 августа 2010
Clipboard.SetText("hello");

Для этого вам необходимо использовать пространства имен System.Windows.Forms или System.Windows.

37 голосов
/ 04 декабря 2015

Для консольных проектов в пошаговом режиме, вам сначала нужно добавить ссылку System.Windows.Forms. Следующие шаги работают в Visual Studio Community 2013 с .NET 4.5:

  1. В Solution Explorer разверните консольный проект.
  2. Щелкните правой кнопкой мыши Ссылки , затем нажмите Добавить ссылку ...
  3. В группе Сборки в разделе Framework выберите System.Windows.Forms.
  4. Нажмите OK .

Затем добавьте следующий оператор using вместе с остальными в верхней части вашего кода:

using System.Windows.Forms;

Затем добавьте в код один из следующих операторов Clipboard. SetText:

Clipboard.SetText("hello");
// OR
Clipboard.SetText(helloString);

И, наконец, добавьте STAThreadAttribute к вашему Main методу следующим образом, чтобы избежать System.Threading.ThreadStateException:

[STAThreadAttribute]
static void Main(string[] args)
{
  // ...
}
37 голосов
/ 22 мая 2014

Мой опыт решения этой проблемы с копированием WPF C # в буфер обмена и System.Threading.ThreadStateException здесь с моим кодом, который корректно работал во всех браузерах:

Thread thread = new Thread(() => Clipboard.SetText("String to be copied to clipboard"));
thread.SetApartmentState(ApartmentState.STA); //Set the thread to STA
thread.Start(); 
thread.Join();

кредитов к этому сообщению здесь

Но это работает только на локальном хосте, поэтому не пытайтесь сделать это на сервере, так как он не будет работать.

На стороне сервера я сделал это с помощью zeroclipboard.Единственный способ, после долгих исследований.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...