vb按钮多次连击问题

我用vb编写一个程序,需要读取较复杂数据,运行时间较长,因此在运行期间需要保持执行的按钮处在不可用状态,以免重复运算。我将按钮的Enabled属性设置成false了,运行... 我用vb编写一个程序,需要读取较复杂数据,运行时间较长,因此在运行期间需要保持执行的按钮处在不可用状态,以免重复运算。我将按钮的Enabled属性设置成false了,运行时虽然按钮被显示成灰色字体,但是如果在运行期间单击按钮,按钮程序仍然会再次被执行,甚至将按钮设置成运行期间不可见,visibal设置成false,在原先按钮的位置单击,依然会重复运行。
我在按钮里加上判定语句,判定Enabled、visibal为false时不执行按钮命令,可依然重复运行。我通过caption改动命令按钮上的文字,再判定,也还是重复。
后来,我发现是在运行期间单击按钮,并没有立刻执行,而是在运行后,恢复了Enabled、visibal为true,此时执行了在为false期间的单击动作,这个问题该怎么解决。
在线等,求大神帮忙
展开
 我来答
yfcp
推荐于2016-02-16 · 知道合伙人软件行家
yfcp
知道合伙人软件行家
采纳数:1748 获赞数:5545
有多年网站建设相关工作经验。熟悉ASP、ASP.net、VB、JavaScript、HTML等语言和CSS、Ajax等相关技术。

向TA提问 私信TA
展开全部

你好,正常情况下,按钮的Enabled属性设置成false,就不会再被点击了。你可以单独建一个窗体,自己测试一下。

1、你把Enabled=false放到点击按钮最前面,一点击先触发Enabled。不要放到代码最后面。

2、如果不是上面的问题,应该就是你的程序其他代码问题,这个需要看具体代码和情况。


测试代码:新建一个窗体,加个command1按钮。下面代码command1点击后延迟5秒弹出,也就是模拟长时间运行代码。
Private Declare Function GetTickCount Lib "kernel32" () As Long
Private Sub Command1_Click()
    Command1.Caption = "点击按钮-5秒后可用"
    Command1.Enabled = False
    Dim iTick As Long
    iTick = GetTickCount
    While GetTickCount - iTick < 5000
        DoEvents
    Wend
    MsgBox "过5秒了,弹出窗口"
    Command1.Enabled = True
End Sub
追问
我的代码结构差不多,先设置enabled的false,在最后改为true
不过,我发现是在运行期间单击按钮(按钮还是false状态),并没有立刻执行,而是在运行后,恢复了Enabled、visibal为true,此时执行了在为false期间的单击动作。我很不解。我的代码在这期间执行了对电子表格的操作,因此时间很长,而且不希望重复执行。
追答
按钮Enabled=false后会马上失去点击事件的。这个应该检查一下你的其他代码了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式