| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1280 人关注过本帖
标题:为什么点击停止时会执行CmdStop_Click()
只看楼主 加入收藏
烟雨袅袅
Rank: 6Rank: 6
来 自:星空雨际
等 级:侠之大者
威 望:1
帖 子:430
专家分:494
注 册:2007-11-26
结帖率:100%
收藏
 问题点数:0 回复次数:5 
为什么点击停止时会执行CmdStop_Click()
这是一列出下级所有目录VB源码,为什么点击停止时会执行CmdStop_Click(),是哪里设置的


Option Explicit


Private Sub CmdStart_Click()
Static running As Boolean

Dim AllDirs As New Collection
Dim next_dir As Integer
Dim dir_name As String
Dim sub_dir As String
Dim i As Integer
Dim txt As String

    If running Then
        running = False
        CmdStart.Enabled = False
        CmdStart.Caption = "Stopping"
    Else
        running = True
        MousePointer = vbHourglass
        CmdStart.Caption = "Stop"
        OutText.Text = ""
        DoEvents
        
        next_dir = 1
        AllDirs.Add StartText.Text ' 开始
        Do While next_dir <= AllDirs.Count
            ' 获得下一个子目录
            dir_name = AllDirs(next_dir)
            next_dir = next_dir + 1
            
            ' 从 dir_name 读路径
            sub_dir = Dir$(dir_name & "\*", vbDirectory)
            Do While sub_dir <> ""
                ' 添加路径名称到列表
                ' 它是一个路径
                If UCase$(sub_dir) <> "PAGEFILE.SYS" And _
                    sub_dir <> "." And sub_dir <> ".." _
                Then
                    sub_dir = dir_name & "\" & sub_dir
                    On Error Resume Next
                    If GetAttr(sub_dir) And vbDirectory _
                        Then AllDirs.Add sub_dir
                End If
                sub_dir = Dir$(, vbDirectory)
            Loop
            DoEvents
            If Not running Then Exit Do
        Loop
   
        ' 更新显示
        txt = ""
        For i = 1 To AllDirs.Count
            txt = txt & AllDirs(i) & vbCrLf
        Next i
        OutText.Text = txt
        MousePointer = vbDefault
        CmdStart.Caption = "Start"
        CmdStart.Enabled = True
        running = False
    End If
End Sub


Private Sub CmdStop_Click()
    CmdStart.Enabled = False
    CmdStop.Enabled = False
    running = False
End Sub


[[italic] 本帖最后由 烟雨袅袅 于 2007-12-10 05:36 编辑 [/italic]]

列出所有下级目录.rar (2.64 KB)
搜索更多相关主题的帖子: Click CmdStop 时会 Dim running 
2007-12-10 05:35
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
看running变量

我的msn: myfend@
2007-12-10 09:31
烟雨袅袅
Rank: 6Rank: 6
来 自:星空雨际
等 级:侠之大者
威 望:1
帖 子:430
专家分:494
注 册:2007-11-26
收藏
得分:0 
原帖由 [bold][underline]purana[/underline][/bold] 于 2007-12-10 09:31 发表 [url=http://bbs.][/url]
看running变量


还是不明白啊,请明示
2007-12-10 15:40
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
你的CmdStop_Click事件中..设置了running为false
而你的CmdStart_Click事件中..
含有这两句.
DoEvents
If Not running Then Exit Do
起到了关键性作用.
DoEvents   '可以将控制权交出.这样就可以执行CmdStop_Click事件.以免让程序独占cpu.
而If Not running Then Exit Do
就可以判断当running为false时,而退出do循环.

我的msn: myfend@
2007-12-10 15:44
烟雨袅袅
Rank: 6Rank: 6
来 自:星空雨际
等 级:侠之大者
威 望:1
帖 子:430
专家分:494
注 册:2007-11-26
收藏
得分:0 
当时看的时候还没有特别注意 doevents 没想到起到这么重要的作用,

在设计窗口里并没有看到CmdStop 控件,估计是有人把它删除了,其实
Private Sub CmdStop_Click()
    CmdStart.Enabled = False
    CmdStop.Enabled = False
    running = False
End Sub
是不执行的
很感谢purana版主热心指点

[[italic] 本帖最后由 烟雨袅袅 于 2007-12-10 16:19 编辑 [/italic]]
2007-12-10 16:18
梦心
Rank: 4
来 自:福建平和
等 级:贵宾
威 望:13
帖 子:1910
专家分:0
注 册:2007-5-11
收藏
得分:0 
...........

我清高和我骄傲的倔强,在风中大声的唱:我不听,我不听~~做我自己最特别,呼呼~~啦啦~~~
我的博客园地址: [url]http://[/url]
2007-12-10 18:41
快速回复:为什么点击停止时会执行CmdStop_Click()
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033257 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved