注册 登录
编程论坛 VB.NET论坛

初用VB2008,关于timer控件和mouse_click事件

五面怪 发布于 2008-11-30 10:25, 3946 次点击
小弟初用VB2008,给公司编写一个生产线信息显示的程序。有2个问题,请教各位高手。

1。我需要单击鼠标,让一个变量自动+1,并在label1.text上显示,我试用了form1.click事件和mouse_click事件,但都只在第一次点击鼠标左键后执行了+1的命令,以后在点就不管用了,不知道为什么。
2。我查资料timer控件没有暂停功能,每次重新开始就会重新开始计inv...那个设定的毫秒数,我需要他有暂停功能,不知如何能实现。
这个暂停的需求是因为,生产一个产品需要一个时间t,但从早上8:40分开始,每8:40+t就会一个num+1,但因为中间有休息,吃饭等长短不固定的中断时间,例如t=10分钟,9:55完成一个产品,产品数num=+1,下一个产品应该在10:05完成,但10:00~10:10休息,也就是下一个产品完成时间是10:15,我的timer控件设每过t时间,num自动加1,那么就需要它在10:00时暂停,10:10启动后不能那个Inv..的值从0开始计,否则这个产品的完成时间就变成10:20了,这会和第一个问题中由工人控制的那个变量自动加1的显示出现偏差。而这个程序的目的,就是要看工人的完成时间,和理论计算的差别,以便于生产的头们随时监控问题。
5 回复
#2
dingwz2008-11-30 16:38
第一个问题:
定义的变量要用 static静态形式,否则每次重新定义都会被归零:
    Private Sub Form1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click
        Static i As Integer
        i += 1
        Label1.Text = i
    End Sub
否则就在form1_load 里定义public形式的变量用
#3
dingwz2008-11-30 17:14
第二个问题:
需要定义一个变量,记录timer的值:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If Button1.Text = "开始" Then
            Button1.Text = "暂停"
            Timer1.Start()
        Else
            Button1.Text = "开始"
            Timer1.Stop()
        End If
    End Sub
    Public i, ProductCon As Integer
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        '1秒一计数
        i += 1
        '十秒增加产品增加1
        If i Mod 10 = 0 Then
            ProductCon += 1
        End If
        Label1.Text = "第" & ProductCon + 1 & "个产品完成还有" & 10 - (i Mod 10) & "秒"
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click '用于数值清零
        Timer1.Stop()
        i = 0
        ProductCon = 0
        Button1.Text = "开始"
        Label1.Text = "已停工"
    End Sub
#4
五面怪2008-12-01 12:30
多谢兄弟的回复,第一个问题,看了兄弟的代码,我就知道我错在忘了给变量+1,我只写了一句label1.text=a+1,我把两句揉到一句里了。多谢。
第二个问题,我正在试验,因为需要自动停止和开启,我不得不在设一个timer控件。
我想问问,我的程序基本已经出来了,但鼠标点击+1的事件只有在主窗口的form中点管用,当我运行3个form窗口滚动显示时,按鼠标就不管用了,有什么方法解决吗?
#5
bygg2008-12-01 12:56
有Timer了,就好办.设置它的Enable属性就可控件 停止和开启.
#6
dingwz2008-12-02 16:16
楼主自己再想一想,我也是新手,你描述的不清,我还没想明白你遇到的新问题
1