В настоящее время у меня есть некоторый код для перехвата всех событий вырезания, копирования и вставки в RichTextBox в WPF. Они предназначены для удаления всего содержимого, кроме обычного текста, и не допускают вставки, кроме простого текста (с помощью проверки методом Clipboard.ContainsText ().) Кажется, это успешно предотвращает все такие операции от внутри формы. Пользователь может копировать, вырезать и вставлять текст только с изображениями / аудио данными / случайным мусором, не разрешенным.
Однако, если я использую функцию PrintScreen и вставляю ее в один из RichTextBoxes, изображение вставляется (а не в требуемое поведение.) Если вы затем попытаетесь вставить это изображение из одного 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 (и т. Д.) По существу проверяют наличие только текста, прежде чем разрешать какие-либо операции.
Кажется, здесь работают два буфера обмена, один из которых я не ограничиваю / блокирую. Кто-нибудь знает о технических особенностях этого и о том, каким образом все действия буфера обмена (как формы, так и системы) могут быть заблокированы и эффективно настроены?
Заранее спасибо.