Как перехватить в TextBox событие вставки данных из буфера ? - VB

Узнай цену своей работы

Формулировка задачи:

Написал свой MaskEdit на основе TextBox и выяснилось, что пользователи часто вводят данные копированием и вставкой из буфера. Короче пока ввод идет по буквам - все Ok Иначе - беда. Как мне перехватить событие вставки, а там я уже разберусь. Помогите пожалуйста.

Решение задачи: «Как перехватить в TextBox событие вставки данных из буфера ?»

textual
Листинг программы
Option Explicit
 
Dim RtbKeyBoardEnter As Boolean, RtbKeyS(1)
'Объявляем переменную - показывает статус, откуда произошло изменения. Массив - хранит два последних аски кода, которые были нажаты на клаве. При том если это были коды комбинации клавиш Shift+Insert или Ctrl+V, то они обрабатываются....
 
Private Sub RichTextBox1_Change()
If Not RtbKeyBoardEnter Then MsgBox 'Вставка из буфера!' 'если ввод не с клавы (т.е. если  идет вставка из буфера (независимо - мышой или с помощью комбинаций - выводим мессагу)
'**************** твой код *************
RtbKeyBoardEnter = False 'снимаем флажок ввода с клавы
End Sub
 
Private Sub RichTextBox1_KeyDown(KeyCode As Integer, Shift As Integer)
RtbKeyBoardEnter = True 'ставим флажок ввода с клавы
RtbKeyS(0) = RtbKeyS(1) ' изменяем массив
RtbKeyS(1) = KeyCode
If RtbKeyS(0) = 16 And RtbKeyS(1) = 45 Then RtbKeyBoardEnter = False 'проверка - являются ли два последних нажатия комбинацией клавиш для вставки... если являются, то это означает что изменения произошли не с клавы...
If RtbKeyS(0) = 17 And RtbKeyS(1) = 86 Then RtbKeyBoardEnter = False
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.091 из 5
Похожие ответы