Как скопировать данные в буфер обмена на C#
Как я могу скопировать строку (например, "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# копинг в буфер обмена и
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:
- на Обозреватель, разверните проект консоли.
- щелкните правой кнопкой мыши ссылки, нажмите кнопку Добавить Ссылку...
- на сборки группа, под рамки, выберите
System.Windows.Forms.- клик ОК.
затем добавьте следующие
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) { // ... }