C# WPF Clipboard.SetText()无法正常工作

7

我在使用WPF应用程序中的剪贴板时遇到了问题,我的代码如下:

        var msg = "sample message for the clipboard";
        Clipboard.Clear();
        Clipboard.SetText(msg);

但是只有 "\t\t\t\r\n" 被存储在我的剪贴板中。 这是我应用程序中唯一使用剪贴板的代码,而且它会被调用。
*编辑:找到了错误。我在DataGridRow中使用以上代码进行复制粘贴操作。下面的代码适用于此操作:
 private void OnCopyingRowClipboardContent(object sender, DataGridRowClipboardEventArgs e)
    {
            var msg = "sample"
            e.ClipboardRowContent.Clear();
            e.ClipboardRowContent.Add(new DataGridClipboardCellContent(e.Item, (sender as DataGrid).Columns[0], msg));
    }

我猜问题出在它在我的Clipboard.SetText(..)之后自动尝试从我的DataGrid复制某些内容,从而再次覆盖了我的文本。

2个回答

7

清空剪贴板是多余的,因为SetText会自动为您完成该操作。

这是我通常使用的方法:

Clipboard.SetText(msg, TextDataFormat.Text);

或者

Clipboard.SetText(msg,TextDataFormat.UnicodeText);

参考资料在这里


4
    protected void clipboardSetText(string inTextToCopy)
    {
        var clipboardThread = new Thread(() => clipBoardThreadWorker(inTextToCopy));
        clipboardThread.SetApartmentState(ApartmentState.STA);
        clipboardThread.IsBackground = false;
        clipboardThread.Start();
    }
    private void clipBoardThreadWorker(string inTextToCopy)
    {
        System.Windows.Clipboard.SetText(inTextToCopy);
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接