|
0 / 0 / 0
Регистрация: 29.10.2010
Сообщений: 93
|
|
Как запретить копирование текста из RichtextBox в буфер обмена?29.11.2010, 11:44. Показов 6064. Ответов 40
Метки нет (Все метки)
Задача такая: выводить текст на форму так, чтобы его можно было только читать. Пробовал использовать Label, но без полос прокрутки текста получилось очень убого
![]() Спасибо, если кто подскажет.
0
|
|
| 29.11.2010, 11:44 | |
|
Ответы с готовыми решениями:
40
Копирование текста в буфер обмена Копирование текста в буфер обмена Копирование текста в буфер обмена |
|
0 / 0 / 0
Регистрация: 29.10.2010
Сообщений: 93
|
|
| 29.11.2010, 11:55 [ТС] | |
|
Извините, сам нашел ответ: поставить Enabled = False
Всем спасибо
0
|
|
|
0 / 0 / 0
Регистрация: 29.10.2010
Сообщений: 93
|
|
| 29.11.2010, 11:58 [ТС] | |
|
А! Нет, не получается: если текст большой, то скроллинг не работает.... а как же сделать тогда?
0
|
|
|
0 / 0 / 3
Регистрация: 28.01.2010
Сообщений: 279
|
|
| 29.11.2010, 12:17 | |
|
AutoVerbMenu=False, Locked=True
0
|
|
|
0 / 0 / 0
Регистрация: 29.10.2010
Сообщений: 93
|
|
| 29.11.2010, 12:26 [ТС] | |
|
RE:'AutoVerbMenu=False, Locked=True'
не-а, не работает... то есть правый клик мышкой заблокирован, но можно выделить текст и все скопировать Ctrl+C
0
|
|
|
0 / 0 / 0
Регистрация: 29.10.2010
Сообщений: 93
|
|
| 29.11.2010, 13:54 [ТС] | |
|
Хотя, если отслеживать нажатие Ctrl+C, то можно использовать метод Clipboard.Clear, который очистит буфер обмена.
Тогда лишь одна проблема - как отслеживать нажатие Ctrl+C?
0
|
|
|
0 / 0 / 0
Регистрация: 29.10.2010
Сообщений: 93
|
||||||
| 29.11.2010, 14:30 [ТС] | ||||||
|
Итак, полное решение:
AutoVerbMenu=False, Locked=True - блокирует вызов контекстного меню в модуль формы пишем:
Всем спасибо.
0
|
||||||
|
Messir
|
|
| 30.11.2010, 00:37 | |
|
Скопируешь при желании...
|
|
|
0 / 0 / 3
Регистрация: 28.01.2010
Сообщений: 279
|
|
| 30.11.2010, 09:53 | |
|
Еще учти сочетание Shift+Ins оно тоже что Ctrl+C, его тоже заблокируй.
0
|
|
|
Messir
|
|
| 30.11.2010, 13:42 | |
|
А еще сообщения никто не отменял...
|
|
|
2 / 2 / 1
Регистрация: 18.10.2007
Сообщений: 1,748
|
|
| 30.11.2010, 18:23 | |
|
не Shift+Ins, а Ctrl+Ins
0
|
|
|
3 / 3 / 0
Регистрация: 12.07.2010
Сообщений: 128
|
|
| 05.12.2010, 23:20 | |
|
Если мне память не изменяет Ctrl+C не догма.
Пользователь может настроить функцию копирования на другое сочетание...
0
|
|
|
render
|
|
| 06.12.2010, 09:42 | |
|
User'у никто не помешает изменить сочетание клавиш для копирования в буфер обмена поэтому я бы решал проблему так:
1. При открытии формы - создавать тред. 2. В треде выпонять проверку: if ClipBoard.GetFormat(vbCFText)=True then if ClipBoard.GetText() = txtRichEdit.Text then ClipBoard.Clear end if |
|
|
Messir
|
|
| 06.12.2010, 09:46 | |
|
А я бы - сабклассингом...
|
|
|
0 / 0 / 0
Регистрация: 29.10.2010
Сообщений: 93
|
|
| 06.12.2010, 10:01 [ТС] | |
|
А можно пояснить, что такое 'тред'?
0
|
|
|
3 / 3 / 0
Регистрация: 12.07.2010
Сообщений: 128
|
|
| 06.12.2010, 11:31 | |
|
1 - сабклассингом:
от контекстного меню спасает сразу: блокируем обработку WM_COPY по принципу http://relib.com/forums/topic.asp?id=837670, так как меню просто посылает RichTextBox'у это сообщение. Спасает также от SendMessge. Но Ctrl+Ins этот метод не блокирует, т.к. в этом случае WM_COPY не посылается. Здесь можно обрабатывать и сообщения клавиатулы, но как уже отмечалось, они могут быть разные. Надо хотя бы узнать в run-time текущие настройки и подавлять именно текущие сочетания. 2 - с помощью 'трейда': приведенный пример имеет один недостаток - можно копировать текст по частям и тут никакие сравнения с содержимым RichTextBox не помогут. Как вариант можно очищать Clipboard независимо от содержимого (ну, если текст). А вообще, и трейд-то наверное не нужен. Можно просто Timer. Однако, лично мое мнение, тупое ClipBoard.Clear - противоречит духу программирования в многозадачное среде, хотя если очень нужно, то... С уважением.
0
|
|
|
3 / 3 / 0
Регистрация: 12.07.2010
Сообщений: 128
|
|
| 06.12.2010, 11:42 | |
|
Небольшое дополнение к методу с 'сабклассингом'. Раз мы должны
защищать наш RichTextBox от копирования, полагаю и вводить туда с клавиатуры ничего не нужно, т.е. RichTextBox используется для отображения текста. Если так, то наверное можно блокровать не Ctrl+Ins, А ВСЕ СООБЩЕНИЯ ОТ КЛАВИАТУРЫ !!! Уж это-то наверно сработает.
0
|
|
|
3 / 3 / 0
Регистрация: 12.07.2010
Сообщений: 128
|
|
| 06.12.2010, 11:49 | |
|
Ну насчет ВСЕ СООБЩЕНИЯ ОТ КЛАВИАТУРЫ я немножко погорячился. Надо оставить хотябы клавиши навигации (минимум).
А есть еще один метод: не давать выделять текст, тогда и копировать нечего будет.
0
|
|
|
3 / 3 / 0
Регистрация: 12.07.2010
Сообщений: 128
|
|
| 06.12.2010, 12:08 | |
|
Вопрос Messir'у:
Судя по Вашему игривому настроению Вы имеете ввиду что-то типа GetWindowText, который, как я понимаю мимо наших ловушек проскочит. Можно ли этому воспрепятствовать?
0
|
|
|
Messir
|
|
| 06.12.2010, 12:13 | |
|
Можно, точно так же, как можно и обойти это припятствие при известном желании... Например, можно перехватить также WM_GETTEXT и ему подобные, специфические для RTB вызовы. Еще неплохо бы определять, от кого пришло сообщение и фильтровать сообщения извне (но это сложнее...)
|
|
| 06.12.2010, 12:13 | |
|
Помогаю со студенческими работами здесь
20
Копирование текста в буфер обмена Копирование текста в буфер обмена в Windows XP Копирование\вставка текста в\из буфер обмена DOS??? (На Ассемблере) Автоматическое копирование текста в буфер обмена, или другое место Копирование строк текста в буфер обмена с последующим смещением на строку Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|