WPF 中 OpenClipboard 失敗問題 - HRESULT: 0x800401D0 的解決方案

解決方案能夠參照:https://stackoverflow.com/questions/12769264/openclipboard-failed-when-copy-pasting-data-from-wpf-datagridwindows

關鍵的問題在於 Clipboard.SetText() 方法會觸發異常。this

 

方案一:spa

It is a bug in the WPF Clipboard handler. You need to handle the unhandled exception in the Application.DispatcherUnhandledException event.code

Add this attribute to the Application element in your App.xamlblog

DispatcherUnhandledException="Application_DispatcherUnhandledException"

 

Add this code to your App.xaml.cs fileip

void Application_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
{
    var comException = e.Exception as System.Runtime.InteropServices.COMException;

    if (comException != null && comException.ErrorCode == -2147221040)
         e.Handled = true;
}

 

方案二:element

We are using .NET 4.0. We had the same problem, but after logging off the system, code used to work fine for some time.get

Finally we found the alternative.string

If you want to copy a string to the clipboard,it

string data = "Copy This"

Till now I was using the following method

Clipboard.SetText(data);

It was failing again and again. Then I looked at other methods available to set text in the clipboard in Clipboard Class and tried the following:

Clipboard.SetDataObject(data);

And it worked :). I never had the issue again.

 

更多的方案參照最上方的連接。

 

若是是 DataGrid 的複製問題,通常 DataGridTextColumn 是能夠直接進行復制的,若是是 DataGridTemplateColumn,則須要添加

ClipboardContentBinding="{Binding 屬性}"

到 DataGridTemplateColumn 中就能解決此問題。

相關文章
相關標籤/搜索