Как запретить пользователям копировать текст из RichTextBox в приложении C #? - PullRequest
3 голосов
/ 29 декабря 2011

Можно ли как-то запретить конечным пользователям копировать текст из RichTextBox в приложении C #?Может быть, что-то вроде добавления прозрачной панели над RichTextBox?

Ответы [ 4 ]

4 голосов
/ 29 декабря 2011

http://www.daniweb.com/software-development/csharp/threads/345506

Re: Отключить управление копированием и вставкой для элемента управления Richtextbox. Два шага. чтобы отключить функцию копирования-вставки в текстовом поле,

1) Чтобы остановить копирование / вставку правой кнопкой мыши, отключите меню по умолчанию и ассоциировать текстовое поле с пустым контекстным меню, в котором нет меню товар.

2) Чтобы остановить горячие клавиши, вам нужно переопределить ProcessCmdKey Метод:

Синтаксис C # (переключить обычный текст)

private const Keys CopyKey = Keys.Control | Keys.C;
private const Keys PasteKey = Keys.Control | Keys.V;

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { 
    if((keyData == CopyKey) || (keyData == PasteKey)){
        return true;
    } else {
      return base.ProcessCmdKey(ref msg, keyData);
    }
}
2 голосов
/ 29 декабря 2011

Вам нужно создать подкласс элемента управления rich edit box, переопределить сообщение WM_COPY и ничего не делать, когда вы его получите.(Не делегируйте DefWindowProc.)

Вы также должны будете сделать то же самое для WM_CUT.

И все же любой желающий сможет получить текст с помощью некоторой утилиты, такой как Spy ++.

1 голос
/ 29 декабря 2011

Вы могли бы сделать это (я думаю):

//Stick this in the KeyDown event of your RichtextBox
    if (e.Control && e.KeyCode == Keys.C) {
        e.SuppressKeyPress = true;
    }
1 голос
/ 29 декабря 2011

Один из способов сделать это - получить доступ к объекту clipbord, и затем вы можете манипулировать содержимым clipbord.

метод очистки clipbord: Clipboard.Clear Method

...