拦截RichTextBox控件的TextChanged事件
各位好,以下语句
RichTextBox.[Select](intStart, intEnd - intStart)
RichTextBox.SelectionBackColor = 背景色
RichTextBox.SelectionColor = 普通字颜色
不知道怎么回事会进入RichTextBox控件的TextChanged事件,
当单步运行时,执行完,RichTextBox.[Select](intStart, intEnd - intStart)这条选择文字时
再执行RichTextBox.SelectionBackColor = 背景色和RichTextBox.SelectionColor = 普通字颜色
2条语句都会进入TextChanged,每次进入TextChanged事件,控件就会自动增加一个撤销的动作
会导致撤销功能的混乱,当去掉RichTextBox.[Select](intStart, intEnd - intStart)这条选择文字,程序正常所以我想再系统接收到TextChanged事件前拦截,然后根据标志,选择让不让系统继续处理TextChanged.
或者RichTextBox控件有无关闭自动撤销和恢复的功能,程序跟使用的net版本无关,TextChanged事件对应下面的是那个消息,我想用系统的钩子扑捉它
Public Const WH_CALLWNDPROC = 4 '发给窗口的消息.线程或系统
Public Const WH_CALLWNDPROCRET = 12 '窗口返回的消息.线程或系统
Public Const WH_CBT = 5 '窗口变化、焦点设定等消息.线程或系统
Public Const WH_DEBUG = 9 '是否执行其它hook的hook.线程或系统
Public Const WH_FOREGROUNDIDLE = 11 '前台程序空闲 .线程或系统
Public Const WH_GETMESSAGE = 3 '投放至消息队列中的消线程或系统
Public Const WH_HARDWARE = 8
Public Const WH_JOURNALPLAYBACK = 1 '将所记载的消息进行回放系统
Public Const WH_JOURNALRECORD = 0 '监视并记录输入消息系统
Public Const WH_KEYBOARD = 2 '键盘消息.线程或系统
Public Const WH_KEYBOARD_LL = 13
Public Const WH_MOUSE = 7 '鼠标消息.线程或系统
Public Const WH_MOUSE_LL = 14
Public Const WH_MSGFILTER = (-1) '菜单滚动条、对话框消息.线程或系统
Public Const WH_SHELL = 10 '外壳程序的消息.线程或系统
Public Const WH_SYSMSGFILTER = 6 '所有线程的菜单滚动条、对话框消息系统
[解决办法]
对的,RichTextBox类似TextBox,也有TextChanged事件