| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1375 人关注过本帖
标题:请教如何循环中途停止
只看楼主 加入收藏
mp654k
Rank: 2
等 级:论坛游民
帖 子:74
专家分:70
注 册:2011-7-9
结帖率:66.67%
收藏
已结贴  问题点数:0 回复次数:8 
请教如何循环中途停止
比如button1.click的事件如下
dim a as integer
for i as integer=0 to 10000000
    a+=i
end for
textbox1.text=a
如何单击button1后,循环没有结束前,button1.text显示为"终止",而且此时点击它时循环停下,输出此时的a的值到textbox1,求代码,多线程也行

[ 本帖最后由 mp654k 于 2011-7-31 13:32 编辑 ]
搜索更多相关主题的帖子: 如何 而且 多线程 
2011-07-31 13:31
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:10 
dim Button1Count as short=0

Button MouseDown()
Button1Count+=1

Button1 Click()
dim a as integer
for i as integer=0 to 10000000
    a+=i
    appication.Doevents()
    if Button1Count mod 3=1 then Button1.text="Stop"
    if Button1Count mod 3=0 then exit For
end for
textbox1.text=a

[ 本帖最后由 wube 于 2011-7-31 15:32 编辑 ]

不要選我當版主
2011-07-31 15:29
mp654k
Rank: 2
等 级:论坛游民
帖 子:74
专家分:70
注 册:2011-7-9
收藏
得分:0 
经测试,下面代码可以:
Public Class Form1
    Dim Button1Count As Short = 0
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Button1.Text = "开始"
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Button1Count += 1
        Dim a As Integer
        For i As Integer = 0 To 10000000
            a += 1
            Application.DoEvents()
            If Button1Count Mod 2 = 1 Then
                Button1.Text = "停止"
            Else
                Button1.Text = "开始"
                TextBox1.Text = a
                Exit Sub
            End If
        Next
        TextBox1.Text = a
        Button1.Text = "开始"
    End Sub
End Class
但这里a不是全局变量,换成全局变量时不能达到效果,我需要a是全局变量,继续请教楼上高手
2011-08-01 00:52
mp654k
Rank: 2
等 级:论坛游民
帖 子:74
专家分:70
注 册:2011-7-9
收藏
得分:0 
如果a是全局变量,代码如下,最后显示出来始终是0,不明白为什么
Public Class Form1
    Dim Button1Count As Short = 0
    Dim a As Integer
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Button1.Text = "开始"
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Button1Count += 1
        For i As Integer = 0 To 10000000
            a += 1
            Application.DoEvents()
            If Button1Count Mod 2 = 1 Then
                Button1.Text = "停止"
            Else
                Button1.Text = "开始"
                TextBox1.Text = a
                a = 0
                Exit Sub
            End If
        Next
        TextBox1.Text = a
        Button1.Text = "开始"
    End Sub
End Class
2011-08-01 01:06
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
程序代码:
Public Class Form1
    Dim Button1Count As Short = 0
    Dim a As Integer
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Button1.Text = "开始"
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        a = 0
        For i As Integer = 0 To 10000000
            a += 1
            Application.DoEvents()
            If Button1Count Mod 2 = 1 Then
                Button1.Text = "开始"
            ElseIf Button1Count Mod 2 = 0 Then
                Button1.Text = "停止"
                TextBox1.Text = a
                Exit Sub
            End If
        Next
        TextBox1.Text = a
        Button1.Text = "开始"
    End Sub

    Private Sub Button1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseDown
        Button1Count += 1
    End Sub
End Class


分开~循环还没跑完~应该不可能Click()又重头跑~要是真这样~a值就不对了~

P.S 我不是高手~我这是VB6中的思路~。NET中我也才刚学~

[ 本帖最后由 wube 于 2011-8-1 12:12 编辑 ]

不要選我當版主
2011-08-01 12:03
mp654k
Rank: 2
等 级:论坛游民
帖 子:74
专家分:70
注 册:2011-7-9
收藏
得分:0 
试了,这样不行.第2次鼠标按下的时候确实停下了,也显示出来了此时的a值,但一松手就显示"1"了.
2011-08-01 12:58
mp654k
Rank: 2
等 级:论坛游民
帖 子:74
专家分:70
注 册:2011-7-9
收藏
得分:0 
想学一下委托,请高手用委托解决
2011-08-01 17:51
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
程序代码:
Public Class Form1
    Dim Button1Count As Short = 0
    Dim a As Integer
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Button1.Text = "Run"
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Button1Count += 1
        For i As Integer = 0 To 10000000
            Application.DoEvents()
            If Button1Count Mod 2 = 1 Then
                Button1.Text = ""
                Button1.Text = "Stop"
            ElseIf Button1Count Mod 2 = 0 Then
                Button1.Text = "Run"
                TextBox1.Text = i
                Button1Count = 0
                Exit For
            End If
            TextBox1.Text = i
            a = i
        Next
        TextBox1.Text = a
    End Sub
End Class

不要選我當版主
2011-08-01 17:54
mp654k
Rank: 2
等 级:论坛游民
帖 子:74
专家分:70
注 册:2011-7-9
收藏
得分:0 
可是可以,不过比较勉强,其实用另外一个变量来保存a的值再赋给a也可以.但这只是我举的一个例子,实际情况比较复杂,我不希望用application.doevents这个方法.最好用委托解决,可惜不会,仍然非常感谢楼上高手.

[ 本帖最后由 mp654k 于 2011-8-1 19:13 编辑 ]
2011-08-01 19:11
快速回复:请教如何循环中途停止
数据加载中...
 
   



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

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