Cómo copiar datos al portapapeles en C #

¿Cómo puedo copiar una cadena (por ejemplo, “hola”) en el Portapapeles del sistema en C #, así que la próxima vez que presione CTRL + V obtendré “Hola”?

Necesitarás una statement de espacio de nombres:

using System.Windows.Forms; 

O para WPF:

 using System.Windows; 

Para copiar una cadena exacta (literal en este caso):

 Clipboard.SetText("Hello, clipboard"); 

Para copiar el contenido de un cuadro de texto:

 Clipboard.SetText(txtClipboard.Text); 

Vea aquí para un ejemplo . O … Documentación oficial de MSDN o aquí para WPF .

 Clipboard.SetText("hello"); 

Tendrá que usar los espacios de nombres System.Windows.Forms o System.Windows para eso.

Mi experiencia con este problema usando WPF C # coping al portapapeles y System.Threading.ThreadStateException está aquí con mi código que funcionó correctamente con todos los navegadores:

 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(); 

créditos a este post aquí

Pero esto solo funciona en el host local, así que no intente esto en un servidor, ya que no va a funcionar.

En el lado del servidor, lo hice usando zeroclipboard . La única forma, después de mucha investigación.

Para proyectos de consola paso a paso, primero deberá agregar la referencia System.Windows.Forms . Los siguientes pasos funcionan en Visual Studio Community 2013 con .NET 4.5:

  1. En Solution Explorer , expanda su proyecto de consola.
  2. Haga clic con el botón derecho en Referencias , luego haga clic en Agregar referencia …
  3. En el grupo Assemblies , en Framework , seleccione System.Windows.Forms .
  4. Haga clic en Aceptar .

Luego, agregue la siguiente instrucción de using con los otros en la parte superior de su código:

 using System.Windows.Forms; 

Luego, agregue cualquiera de los siguientes Clipboard . Declaraciones de SetText a su código:

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

Y, por último, agregue STAThreadAttribute a su método Main siguiente manera, para evitar una System.Threading.ThreadStateException :

 [STAThreadAttribute] static void Main(string[] args) { // ... }