在WPF中,剪切板是一个静态类,设置剪切板很简单。如:将文本添加到剪切板,只需要调用下Clipboard.SetText(Text);
就行了。
但是当你在复制的时候,你会发现,它抛出异常了,System.Runtime.InteropServices.COMException:"OpenClipboard失败(异常来自HRESULT:0x800401D0)(CLIPBRD_E_CANT_OPEN))"
。
好了,看到这里一脸懵逼,winform
都不会啊,这么简单的一句代码。
经过了解发现,原来这个异常是因为设置剪切板的操作还没有执行完,又收到新的设置到剪切板事件操作,于是它就挂给你看了
。
简单粗暴的解决方法:
public void CopyToClipboard(string txt)
{
try
{
Clipboard.SetText(txt);
Task.Delay(100).Wait();
}
catch (Exception ex)
{
L.error(ex.Message);
}
}
复制的时候,让他稍微等一等,可以大幅降低崩溃的概率。
本文会经常更新,请阅读原文: https://huchengv5.gitee.io//post/WPF-%E5%89%AA%E5%88%87%E6%9D%BF%E8%AE%BE%E7%BD%AE%E6%96%87%E6%9C%AC%E6%8A%9B-0x800401D0-%E5%BC%82%E5%B8%B8.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名胡承(包含链接: https://huchengv5.gitee.io/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 。