一尘不染

Clipboard.GetText返回null(空字符串)

c#

我的剪贴板中填充了文本,但是当我运行时

string clipboardData = Clipboard.GetText(System.Windows.Forms.TextDataFormat.Text);

我得到一个空字符串。我玩弄了各种形式的电话,包括:

string clipboardData = Clipboard.GetText();
string clipboardData = Clipboard.GetText(System.Windows.Forms.TextDataFormat.UnicodeText);

但结果相同。

我是否缺少明显的东西?


阅读 466

收藏
2020-05-19

共1个答案

一尘不染

您只能从STA线程访问剪贴板。Rick Brewster在Paint.NET中通过对常规Edit-> Paste命令进行一些重构来解决此问题。

码:

IDataObject idat = null;
Exception threadEx = null;
Thread staThread = new Thread(
    delegate ()
    {
        try
        {
            idat = Clipboard.GetDataObject();
        }

        catch (Exception ex) 
        {
            threadEx = ex;            
        }
    });
staThread.SetApartmentState(ApartmentState.STA);
staThread.Start();
staThread.Join();
// at this point either you have clipboard data or an exception

代码来自里克。http://forums.getpaint.net/index.php?/topic/13712-/page__view__findpost__p__226140

更新贾森·海涅取得加入一个好点()delegate,以固定的暧昧方法错误。

2020-05-19