我的剪贴板中填充了文本,但是当我运行时
string clipboardData = Clipboard.GetText(System.Windows.Forms.TextDataFormat.Text);
我得到一个空字符串。我玩弄了各种形式的电话,包括:
string clipboardData = Clipboard.GetText(); string clipboardData = Clipboard.GetText(System.Windows.Forms.TextDataFormat.UnicodeText);
但结果相同。
我是否缺少明显的东西?
您只能从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,以固定的暧昧方法错误。
()
delegate