Сначала я рассмотрел бы подкласс TextBox.
Если вы создадите «много» из этих текстовых полей; Я бы подумал о том, могут ли они быть и будут ли удалены во время выполнения, а также добавил: есть ли какие-то обстоятельства, при которых вы когда-нибудь захотите «отключить» одно или все специальные события от обработки одним или всеми этими специальными текстовыми полями.
Хотя вы могли бы принять стратегию переопределения ProcessCmdKeys для формы (с включенным ключом предварительного просмотра формы) для глобального решения вопроса о соответствующем состоянии ключа на уровне формы, я бы на этом не пошел; Я хотел бы выделить его в текстовом поле особого случая. Обсуждение ProcessCmdKeys здесь:
текст ссылки
Может быть полезно вам.
Я бы хотел создать специальный класс для обработки экземпляров этих специальных текстовых полей и управления ими, а также их «наделения» этими специальными средствами сбора событий: вы можете захотеть сохранить список тех, которые в настоящее время используются «отслеживать» их. Или, если вы подгруппы, список .
... обратите внимание, что мы пропускаем весь вопрос о возможности вставки или копирования, вызванного выбором из меню по умолчанию TextBox: вы разрешаете это? Это важно для тебя? Вам нужно "подавить это меню"? Если вы хотите по-прежнему иметь это меню и по-прежнему «ловить» события: imho, вам придется использовать подкласс TextBox, определить WndProc и перехватывать там события, такие как WM_Paste. ...
Здесь приведен довольно полный пример кода для подкласса TextBox и обработки ProcessCmdKeys и отслеживания интересующих вас типов событий:
текст ссылки
Но, пожалуйста, обратите внимание, что я сам не использовал и не тестировал вышеуказанный код, он был просто сохранен в моем «архиве» фрагментов, но, по крайней мере, он даст вам основу для изучения ... если Вы должны подкласс.