vb 代码执行CKECK的时候,如何不让他执行CHECK_CLICK.如下代码每次刷新都...
发布网友
发布时间:2024-10-23 21:21
我来回答
共2个回答
热心网友
时间:2024-11-09 03:33
:)过程有点麻烦。首先说说你的代码吧,你的if 语句的结构错了。你再仔细检查一下
Private Sub Check_Click()
if check.value = 1 then
<条件代码>
else
‘ 这一行不需要( If Check.Value = 0 Then)
MsgBox "友情提示!"
End If
end sub
另外,你理解得并不到位,触发click事件的代码是 check.value=0 而不是check.enabled=true 。
回到正题,当你改变checkbox的值的时候,即使是用的代码赋值,也会触发click事件,这是checkbox的特性,没法改变的。但是,换个思路,既然这无法避免,那就从代码上动手,改一下结构。先这样做个定义吧,把你原先的 checkbox_click() 的代码,称作 OriCode。 我们可以设置一个旗标变量flgC,根据旗标变量的值来决定是不是运行Oricode。再做进一步的假设吧,这个flgC在平时的值是True,当你调用Shuaxin的时候,把它置为False。你想一下,是不是这样就能把鼠标执行的变值,和代码实现的变值给区别开来了?
即:
private sub check_click()
if flagC= True then ' flagC在平时的时候是True,只有调用shuaxin的时候才会变false,既然它是true,就是说,这个click不是代码触发的
Oricode
end if ' flagc=false了,也就是说,shuaxin触发了这次click,也就什么都不要做。直接end if
而shuaxin()这个过程,你也要加两句:第一步,先把flagc赋为false,接下来就是你的shuaxin要干的活 ,干完活 最后,再来一句 shuaxin=true ,这句的目的是:保持flagc的常态是 True。
改后的完整代码如下
dim flagc as boolean
private sub form_load()
flagc=true '在程序最开始就把flagc置为常态true,这步不能少
end sub
Private Sub Check_Click()
if flagc=true '此为新增句,flagc=true,也就是说,不是由shuaxin触发的
if check.value = 1 then
'<条件代码>
else
MsgBox "友情提示!"
End If
end if
end sub
Sub Shuaxin() '刷新
flagc=false'此为新增句,把flagc=false,告诉checkbox,是shuaxin触发的
Check.Enabled = True "执行到这里就开始执行CLICK,如何不让他执行CLICK
Check.Value = 0
flagc=true '此为新增句,活干完后,把flagc恢复到常态。
End Sub
热心网友
时间:2024-11-09 03:35
Check.Enabled = True 不会执行 check_click,只是让它可用。
而是下面那句
check.value=0 如果原来的值是1,那么再赋值0,就相当于是单击了。这个没法避免,因为check的值改变了就得判断。除非你修改check_click的代码
你想实现什么功能?