我正在编写一个小应用程序,它应该显示剪贴板中当前字符串中的字符数。例如,有人突出显示一行文本并点击复制,然后运行我的应用程序。我希望它显示字符串中的字符数。应该很简单,但我一直得到归零。有相关的线程,但没有人回答我的问题。这是我到目前为止(它是一个控制台应用程序顺便说一句):
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace BuildandRun
{
class Program
{
static void Main(string[] args)
{
string data = Clipboard.GetText();
Console.WriteLine(data);
int dataLength = data.Length;
Console.WriteLine(dataLength + " Characters.");
Console.ReadLine();
}
}
}
答案 0 :(得分:1)
来自MSDN:
Clipboard类只能在设置为单线程的线程中使用 公寓(STA)模式。要使用此类,请确保使用Main方法 标有STAThreadAttribute属性。
只需将您的代码更改为:
[STAThreadAttribute]
static void Main( string[] args )
答案 1 :(得分:0)
Clipboard
仅适用于Single Threaded Apartment主题。
因此答案是将以下内容添加到Main():
[STAThread]
static void Main(string[] args)
{
...
或者像这样解决方法:
public string GetClipboardText()
{
string result = "";
Thread thread = new Thread(() => result = Clipboard.GetText());
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
return result;
}