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


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

4 345

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# копинг в буфер обмена и 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. клик ОК.

затем добавьте следующие 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)
{
  // ...
}