Как скопировать данные в буфер обмена на C#

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

4 ответов


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

using System.Windows.Forms;

или для WPF:

using System.Windows;

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

Clipboard.SetText("Hello, clipboard");

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

Clipboard.SetText(txtClipboard.Text);

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


Clipboard.SetText("hello");

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


мой опыт работы с этой проблемой с помощью WPF c# coping в буфер обмена и 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();

кредиты на этот пост здесь

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

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


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

  1. на Обозреватель, разверните проект консоли.
  2. щелкните правой кнопкой мыши ссылки, нажмите кнопку Добавить Ссылку...
  3. на сборки группа, под рамки, выберите 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)
{
  // ...
}