0 / 0 / 0
Регистрация: 29.10.2010
Сообщений: 93

Как запретить копирование текста из RichtextBox в буфер обмена?

29.11.2010, 11:44. Показов 6159. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача такая: выводить текст на форму так, чтобы его можно было только читать. Пробовал использовать Label, но без полос прокрутки текста получилось очень убого
Спасибо, если кто подскажет.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.11.2010, 11:44
Ответы с готовыми решениями:

Копирование текста в буфер обмена
Всем доброго времени суток. В макросе требуется скопировать текст в буфер обмена. Ну вроде сделал по инструкции Dim d As New DataObject ...

Копирование текста в буфер обмена
Всем привет, скажите пожалуста, как можна скопировать в буфер обмена определённый текст ?

Копирование текста в буфер обмена
Блин, после замены клипбордовых процедур с апишных на джаву на некоторых машинах (там кстати 8.5 стоит) нотес стал крошиться с ошибкой ...

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 - блокирует вызов контекстного меню

в модуль формы пишем:
Visual Basic
1
2
3
4
5
Private Sub RichTextBox1_KeyPress(KeyAscii As Integer)
    If KeyAscii = 3 Then
        Clipboard.Clear
    End If
End Sub
- и вуаля! текст не скопируешь!
Всем спасибо.
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 вызовы. Еще неплохо бы определять, от кого пришло сообщение и фильтровать сообщения извне (но это сложнее...)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.12.2010, 12:13
Помогаю со студенческими работами здесь

Копирование текста в буфер обмена
Подскажите код с помощью которого можно будет скопировать текст в буфер обмена в Android на языке c#.

Копирование текста в буфер обмена в Windows XP
Здравствуйте. Насколько я понял, в WinXP копирование в буфер посредством ВАТ-файла возможно лишь после установки дополнительных утилит...

Копирование\вставка текста в\из буфер обмена DOS??? (На Ассемблере)
Прошу помощи!!! Вопрос таков: нужно поместить текстовую строку в буфер обмена DOS, а затем извлечь её же???

Автоматическое копирование текста в буфер обмена, или другое место
Хочу сделать кое-какую программу, если нажата клавиша (Например ctrl) то программа автоматически скопирует весь текст с какого-нибудь...

Копирование строк текста в буфер обмена с последующим смещением на строку
Во общем дела таковы, есть текст на 30 строк из которого нужно копировать значения в буфер обмена для дальнейшего загона текста по своим...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru