【发布时间】:2011-04-27 13:40:12
【问题描述】:
我目前有一些代码可以将所有剪切、复制和粘贴事件拦截到 WPF 中的 RichTextBox 中。这些旨在去除除纯文本之外的所有内容,并且除了纯文本外不允许粘贴(通过使用检查 Clipboard.ContainsText() 方法。)这似乎成功地防止了所有此类操作 inside em> 表格。用户只能复制、剪切和粘贴文本,不允许使用图像/音频数据/随机垃圾。
但是,如果我使用 PrintScreen 函数并将其粘贴到其中一个 RichTextBox 中,则图像将被粘贴(不是想要的行为。)如果您尝试将此图像从一个 RichTextBox 粘贴到另一个,它就赢了'不让你(期望的行为)。
我当前覆盖的命令是使用
// Command handlers for Cut, Copy and Paste commands.
// To enforce that data can be copied or pasted from the clipboard in text format only.
CommandManager.RegisterClassCommandBinding(typeof(MyRichTextBox),
new CommandBinding(ApplicationCommands.Copy, new ExecutedRoutedEventHandler(OnCopy),
new CanExecuteRoutedEventHandler(OnCanExecuteCopy)));
CommandManager.RegisterClassCommandBinding(typeof(MyRichTextBox),
new CommandBinding(ApplicationCommands.Paste, new ExecutedRoutedEventHandler(OnPaste),
new CanExecuteRoutedEventHandler(OnCanExecutePaste)));
CommandManager.RegisterClassCommandBinding(typeof(MyRichTextBox),
new CommandBinding(ApplicationCommands.Cut, new ExecutedRoutedEventHandler(OnCut),
new CanExecuteRoutedEventHandler(OnCanExecuteCut)));
OnCopy (etc) 方法在允许任何操作之前基本上检查是否只有文本存在。
这里似乎有两个剪贴板在工作,其中一个我没有限制/锁定。有谁知道这方面的技术细节,以及可以有效锁定和自定义所有剪贴板活动(表单和系统)的任何方式?
提前致谢。
【问题讨论】:
标签: c# wpf richtextbox clipboard