如何在C#中将字符串(例如“ hello”)复制到系统剪贴板中,因此下次按下时CTRL+V我会得到“ hello”?
CTRL+V
有两个类,它们生活在不同的程序集和不同的命名空间中。
WinForms:使用以下命名空间声明,确保Main已标记[STAThread]属性:
Main
[STAThread]
using System.Windows.Forms;
WPF:使用以下名称空间声明
using System.Windows;
控制台:添加对的引用System.Windows.Forms,使用以下名称空间声明,确保Main已标记了[STAThread]属性。另一个答案的分步指南
System.Windows.Forms
要复制确切的字符串(在这种情况下为文字):
Clipboard.SetText("Hello, clipboard");
要复制文本框的内容,请使用TextBox.Copy()或先获取文本,然后设置剪贴板值:
Clipboard.SetText(txtClipboard.Text);
请参阅此处的示例。或者… MSDN官方文档或WPF此处。
备注:
剪贴板是桌面用户界面的概念,尝试在服务器端代码(如ASP.Net)中进行设置,只会在服务器上设置值,而不会影响用户在浏览器中看到的内容。尽管链接的答案使您无法用SetApartmentState它来运行剪贴板访问代码服务器端。
SetApartmentState
如果此问题代码中的以下信息之后仍然出现异常,请参见将字符串复制到剪贴板中的“当前线程必须设置为单线程单元(STA)”错误
该问题/答案涵盖常规.NET,有关.NET Core,请参见-.Net Core-复制到剪贴板吗?