【发布时间】:2016-12-02 15:56:03
【问题描述】:
我的表单中有一个包含 50 个按钮和 1 个标签的面板
Private Sub flp_table_paint(sender As Object, e As PaintEventArgs) Handles flp_table.Paint
Dim i As Integer
For i = 1 To 50
Dim btn_tableNo As New Button
btn_tableNo.Width = 40
btn_tableNo.Height = 40
btn_tableNo.Text = i
AddHandler btn_tableNo.Click, AddressOf TableButtonClicked
Dim timer As New Timer
timer.Tag = i
Me.flp_table.Controls.Add(btn_tableNo)
Next
End Sub
我尝试做的是,对于我单击的每个按钮,它们都会启动自己的计时器并显示在标签上。
例子:
11:00:00PM - 点击 Button1 ,lb_timer 将显示 1,2,3,4...
11:00:30PM - 点击 Button2 ,lb_timer 将显示 1,2,3,4...
11:00:45PM - 再次点击 Button1,lb_timer 将显示 45,46,47,48...
11:00:50PM - 再次点击 Button2,lb_timer 将显示 20,21,22,23...
这是我目前尝试的,但失败了......
Private Sub TableButtonClicked(ByVal sender As Object, ByVal e As EventArgs)
Dim currButton As Button = sender
selectedTable = currButton
For Each timer As Timer In Me.Controls
If timer.Tag = selectedTable.Text Then
timer.Start()
lb_timer.Text = timer.ToString
End If
Next
End Sub
我不知道如何使它工作,请帮助我...
【问题讨论】:
-
你不应该在绘画活动中做任何事情,除了绘画。这也是一个危险的计时器,因为您没有在表单范围内声明它,所以垃圾收集器不知道如何清理它。您也不会对计时器做任何事情——它肯定不是您稍后要循环的 Controls 集合的一部分。计时器不是控件,它们是组件。