web-dev-qa-db-fra.com

Comment copier des données dans le Presse-papiers en C #

Comment puis-je copier une chaîne (par exemple, "hello") dans le Presse-papiers système en C #, de sorte que la prochaine fois que j'appuie sur CTRL+V Je vais avoir "bonjour"?

392
aharon

Vous aurez besoin d'une déclaration d'espace de noms:

using System.Windows.Forms;

OU pour WPF:

using System.Windows;

Pour copier une chaîne exacte (littéral dans ce cas):

Clipboard.SetText("Hello, clipboard");

Pour copier le contenu d'une zone de texte:

Clipboard.SetText(txtClipboard.Text);

Voir ici pour un exemple . Ou ... documentation officielle de MSDN ou ici pour WPF .

739
Kieren Johnstone
Clipboard.SetText("hello");

Vous devrez utiliser les espaces de noms System.Windows.Forms ou System.Windows pour cela.

42
Bradley Smith

Mon expérience avec ce problème en utilisant WPF C # dans le presse-papier et System.Threading.ThreadStateException est ici avec mon code qui a fonctionné correctement avec tous les navigateurs:

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édits à cet article ici

Mais cela ne fonctionne que sur localhost, alors n'essayez pas cela sur un serveur, cela ne fonctionnera pas.

Du côté du serveur, je l'ai fait en utilisant zeroclipboard. La seule façon, après beaucoup de recherches.

37
BMaximus

Pour console projets étape par étape, vous devez d'abord ajouter la référence System.Windows.Forms. Les étapes suivantes fonctionnent dans Visual Studio Community 2013 avec .NET 4.5:

  1. Dans Explorateur de solutions , développez votre projet de console.
  2. Cliquez avec le bouton droit de la souris sur Références , puis cliquez sur Ajouter une référence ...
  3. Dans le groupe Assemblies , sous Cadre , sélectionnez System.Windows.Forms. .
  4. Cliquez sur OK.

Ajoutez ensuite l'instruction using suivante avec les autres en haut de votre code:

using System.Windows.Forms;

Ensuite, ajoutez l’une des déclarations Clipboard . SetText suivantes à votre code:

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

Et enfin, ajoutez STAThreadAttribute à votre méthode Main comme suit pour éviter un System.Threading.ThreadStateException:

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