0

我们有一个 RichTextBox WPF 控件,由于我们控制布局,我们根本不允许任何丰富的内容......

因此,我们需要从剪贴板中删除除文本之外的所有数据。例如,如果有人试图直接从 Microsoft Word 复制/粘贴表格中的文本,RichTextBox 还会考虑该文本是 1. 最初来自表格、2. 粗体和 3. 下划线,并创建所有各种内联内容来容纳文本的所有这些属性......

在我们的例子中,这不是适当的行为,因为它会破坏我们的内联布局......我们只想要干净的文本......

最简单的方法是,在预览粘贴命令中:

Clipboard.SetText(Clipboard.GetText());

并完成它......但你猜对了......剪贴板操作在部分信任中是不允许的......

我们还尝试了一个肮脏讨厌的黑客,使用此链接建议的隐藏文本框:http:
//social.msdn.microsoft.com/Forums/en-US/wpf/thread/5b5bcd71-2eea-4762-bf65-84176c919fce/

像这样:

public static class ClipboardManager
{
    private static readonly TextBox textBox = new TextBox {AcceptsReturn = true, AcceptsTab = true};

    public static void SetText(string text)
    {
        textBox.Text = text;
        textBox.SelectAll();
        textBox.Copy();
    }

    public static string GetText()
    {
        textBox.Clear();
        textBox.Paste();
        return textBox.Text;
    }
}

然后这样称呼它:

ClipboardManager.SetText(ClipboardManager.GetText());

这在完全信任下运行良好,但由于某种原因,TextBox 的 Copy 和 Paste 方法在部分信任下都不起作用......

有谁知道如何在 WPF/部分信任中检索剪贴板的内容?

谢谢

编辑:正如 Nir ​​指出的那样..我知道从剪贴板中改变数据并不是很好。但是如果有人能指出我如何在部分信任的情况下仅从剪贴板中检索文本,我的问题将得到同样的回答:)..

4

2 回答 2

0

这根本不可能。

最后,我们使用了一个切换按钮,您可以在其中切换到一个文本框,将其粘贴到那里,然后切换回我们的控件。讨厌,但它的工作原理。

于 2012-03-26T11:53:19.393 回答
-1

http://msdn.microsoft.com/en-us/library/aa970910.aspx在部分信任中仅表示“纯文本和墨水剪贴板支持”。“富文本格式剪贴板”需要完全信任

于 2009-01-20T15:26:27.563 回答