在VB.net中动态创建计时器并添加唯一名称

在VB.net中动态创建计时器并添加唯一名称,vb.net,Vb.net,好,, 我知道如何创建按钮,并为每个按钮指定唯一的名称以访问它们 我是这样做的 Dim btnName As String Dim x As Short For i As Short = 1 To 3 btnName = "button" & CStr(i) x += 3 Dim button1 As New Button button1.Name = btnName Me.Con

好,, 我知道如何创建按钮,并为每个按钮指定唯一的名称以访问它们

我是这样做的

 Dim btnName As String
    Dim x As Short

    For i As Short = 1 To 3
        btnName = "button" & CStr(i)


        x += 3
        Dim button1 As New Button


        button1.Name = btnName
        Me.Controls.Add(button1)
        button1.Location = New Point(10, x * 10)
        button1.Text = "Hello" & i

    Next
当我试图创建一个计时器时,我不能像上面使用按钮那样给它命名

        btnName = "button" & CStr(i)
        button1.Name = btnName
例如,我不知道如何访问和/或激活它们我想创建三个计时器,并将它们命名为“timer1”、“timer2”、“timer3”


如何实现这一点?

本教程将帮助您创建计时器对象

教程2:创建定时数学测验

详细地说,步骤3将实现这一技巧

步骤3:添加倒计时计时器

这篇文章展示了如何处理tick事件(从MSDN站点复制)


'这是一个表单代码,在单击按钮时启动计时器

  Public Class Form1
     Dim t1 As Timer
     Dim t2 As Timer
     Dim t3 As Timer

    Private Sub btnT1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnT1.Click
       'on btn click start timer1
        t1 = New Timer        
        t1.Tag = DateTime.Now
        AddHandler t1.Tick, AddressOf MyTickHandler
        t1.Start()
    End Sub

   Private Sub btnT2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnT2.Click
        'on btn click start timer2
        t2 = New Timer        
        t2.Tag = DateTime.Now
        AddHandler t2.Tick, AddressOf MyTickHandler
        t2.Start()
    End Sub

  Private Sub btnT2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnT3.Click
        'on btn click start timer3
        t3 = New Timer        
        t3.Tag = DateTime.Now
        AddHandler t3.Tick, AddressOf MyTickHandler
        t3.Start()
    End Sub

    Sub MyTickHandler(ByVal sender As Object, ByVal e As EventArgs)
        dim t As Timer = DirectCast(sender, Timer)
        dim timerString = "The timer started at " & t.Tag.ToString & " just ticked..."
    End Sub

       Private Sub btnStopT1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStopT1.Click

             'stop timer1
              t1.Stop()
              t1.Dispose()   
   End Sub

     Private Sub btnStopT2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStopT2.Click

             'stop timer 2
              t2.Stop()
              t2.Dispose()   
   End Sub

   Private Sub btnStopT3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStopT3.Click

             'stop timer 3
              t3.Stop()
              t3.Dispose()   
   End Sub

End Class

计时器是一个组件,不是控件。
Dim t1 As New System.Windows.Forms.Timer
如何不满足您的需要?@puropoix No-name属性,除非您转到设计器窗口。我“认为”这就是问题所在。在创建动态计时器时要小心。当窗体关闭时,垃圾收集器不会知道它们,所以请确保自己处理它们。对,但是只要您有3个唯一的引用,名称有什么关系@LarsTech@Plutonix没有,但我认为OP对无法使用Name属性感到震惊。我猜。伙计们,问题是我如何创建三个计时器,并给每个计时器一个不同的“名称”,以便稍后禁用其中一些计时器?比如,我想创建一个循环(3次循环),每次它都应该创建一个计时器(通常是3个计时器)。我想稍后引用第一个和第二个计时器,并仅禁用它们(不接触第三个计时器)。“我怎样才能做到这一点?”塞巴斯蒂亚纳伦我改变了答案。这是你想要的吗
  Public Class Form1
     Dim t1 As Timer
     Dim t2 As Timer
     Dim t3 As Timer

    Private Sub btnT1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnT1.Click
       'on btn click start timer1
        t1 = New Timer        
        t1.Tag = DateTime.Now
        AddHandler t1.Tick, AddressOf MyTickHandler
        t1.Start()
    End Sub

   Private Sub btnT2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnT2.Click
        'on btn click start timer2
        t2 = New Timer        
        t2.Tag = DateTime.Now
        AddHandler t2.Tick, AddressOf MyTickHandler
        t2.Start()
    End Sub

  Private Sub btnT2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnT3.Click
        'on btn click start timer3
        t3 = New Timer        
        t3.Tag = DateTime.Now
        AddHandler t3.Tick, AddressOf MyTickHandler
        t3.Start()
    End Sub

    Sub MyTickHandler(ByVal sender As Object, ByVal e As EventArgs)
        dim t As Timer = DirectCast(sender, Timer)
        dim timerString = "The timer started at " & t.Tag.ToString & " just ticked..."
    End Sub

       Private Sub btnStopT1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStopT1.Click

             'stop timer1
              t1.Stop()
              t1.Dispose()   
   End Sub

     Private Sub btnStopT2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStopT2.Click

             'stop timer 2
              t2.Stop()
              t2.Dispose()   
   End Sub

   Private Sub btnStopT3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStopT3.Click

             'stop timer 3
              t3.Stop()
              t3.Dispose()   
   End Sub

End Class