您的位置:程序门 -> vb -> 基础类



事件抑制发生


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


事件抑制发生[已结贴,结贴人:digitboy]
发表于:2007-09-14 17:07:28 楼主
各位朋友:

        请问一下在这种情况如何控制一个事件的发生比较合理

        如我在text1_change事件中写了很多代码,为了方便录入的,此事件最初的目的是往文本框写入数据时触发。但是当我在读取数据而不是写入数据时也会触发此事件。
      我想此时禁止触发该事件,通过一个变量值来判定是否执行事件内代码也可以做到,但我是一个控件数组,程序需反复跳转到此处来进行判定是否要执行change事件内的代码,有没有办法在读取数据的过程中直接抑制事件发生,无需判定。

不知哪位朋友有比较好的解决办法,烦请指点一下,谢谢


如果在text1_change中不写代码通过过程调用也不是很合理,
发表于:2007-09-14 19:09:371楼 得分:0
不知道你是如何“读”text控件中的内容的。
我用如下代码读内容并不会出发text的change事件:

private   sub   command1_click()
me.print   text1.text   '打印出text的内容
end   sub

private   sub   text1_change()
msgbox   " "   '如果change事件触发,就弹出个消息框
end   sub

实际运行的时候并没有弹出消息。
发表于:2007-09-15 08:57:182楼 得分:0
wallscai朋友:

      我是将数据库的数据读入到文本框,因为文本框的内容有变化,所以就触发了change事件,你上面提到me.print是输出到窗体,其内容没有变化,所以也就不会触发该事件
发表于:2007-09-15 10:10:303楼 得分:0
............
发表于:2007-09-15 13:27:074楼 得分:5
digitboy同学
你自己说的:但是当我在读取数据而不是写入数据时也会触发此事件...
现在又说:我是将数据库的数据读入到文本框

帮帮忙,这应该叫做 将数据库的数据写入到文本框
写到文本框当然会触发change事件了
发表于:2007-09-15 17:34:435楼 得分:0
目前我是通过在窗体中设置一个模块变量来进行判定,是否执行事件内的代码,事件也已经触发,只不过事件内的代码是根据变量值来判定是否执行。
发表于:2007-09-15 23:19:446楼 得分:0
你的意思是在load的时候初始化了textbox,这时不想触发change吧
发表于:2007-09-15 23:23:157楼 得分:5
你在textbox里屏蔽系统右键菜单,然后把代码写到text1_keypress里去就可以实现了
这时用户要改变textbox的内容就会有keypress,而在初始化的时候不会触发keypress
前提是没有其他功能修改textbox内容,如果有的话,在修改之后调用一下你的过程处理一下就行
发表于:2007-09-17 09:11:158楼 得分:5
change   事件是无法避免的,其实只需要对   textbox   有焦点时的事件进行响应就可以了,如下:
private   sub   text1_change()
        if   not   me.activecontrol   is   text1   then   exit   sub
        ...
end   sub
发表于:2007-09-17 09:35:479楼 得分:5
最好的办法你自己已经说过了,就是定义一个全局boolean变量,来确认是否需要change,我就是这样做的,我觉得除此之外没什么好办法。


快速检索

最新资讯
热门点击