c# - pegar - vba limpiar portapapeles
Cómo copiar datos al portapapeles en C# (4)
Mi experiencia con este problema al usar la copia de C # de WPF en el 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 para esta publicación here
Pero esto solo funciona en localhost, así que no intentes esto en un servidor, ya que no va a funcionar.
En el lado del servidor, lo hice utilizando zeroclipboard
. La única manera, después de mucha investigación.
¿Cómo puedo copiar una cadena (por ejemplo, "hola") al Portapapeles del sistema en C #, por lo que la próxima vez que presione CTRL + V obtendré "hola"?
Necesitará una declaración 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 .
Para los 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:
- En el Explorador de soluciones , expanda su proyecto de consola.
- Haga clic derecho en Referencias , luego haga clic en Agregar referencia ...
- En el grupo Conjuntos , en Marco , seleccione
System.Windows.Forms
. - Haga clic en Aceptar .
Luego, agregue la siguiente declaración de using
con las otras en la parte superior de su código:
using System.Windows.Forms;
Luego, agregue cualquiera de los siguientes Clipboard
. SetText
declaraciones de texto 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)
{
// ...
}
Clipboard.SetText("hello");
Tendrá que usar los espacios de nombres System.Windows.Forms
o System.Windows
para eso.