是,通過研究花時間我知道迭代通過定時器然後得到他們的名字
一個定時器是一個組件不是控制,所以它不會設在 控件集合。在這種情況下,最好不要 使用常見的按鈕點擊處理程序,因爲它不會簡化 的任何操作。 (Source)
但是,有什麼我可以做,以通過我目前的情況?
我想只要用戶點擊一個按鈕(我有許多按鈕),它將確定該按鈕的狀態是Start
或Stop
那麼,如果它是stop
它應該start
是。
停止和開始對應於計時器,我所擁有的按鈕數量與我擁有的計時器數量相對應。
我可以很容易地連接他們通過建立這樣的函數
Function isBTNStatusEnabled(sender As Object) As Boolean
Dim result As Boolean = False
Dim btnStatus As Button = DirectCast(sender, Button)
Dim btnStatusNumber As String = btnStatus.Name.Substring(btnStatus.Name.Length - 1)
Console.WriteLine("Found the " & btnStatus.Name)
If btnStatus.Text = "Start" Then
btnStatus.Text = "Stop"
result = True
btnStatus.BackColor = Color.Red
Else
btnStatus.Text = "Start"
result = False
btnStatus.BackColor = SystemColors.Control
End If
For Each frmTesterObjects As Object In Me.components.Components
If TypeOf frmTesterObjects Is Timer And DirectCast(frmTesterObjects, Timer).Tag.ToString = "tmrString" & btnStatusNumber Then
'what to do
Console.WriteLine("Timer name: " & DirectCast(frmTesterObjects, Timer).Tag.ToString)
End If
Next frmTesterObjects
Return result
End Function
我的問題是這部分代碼
If TypeOf frmTesterObjects Is Timer And DirectCast(frmTesterObjects, Timer).Tag.ToString = "tmrString" & btnStatusNumber Then
Console.WriteLine("Timer name: " & DirectCast(frmTesterObjects, Timer).Tag.ToString)
End If
我試圖通過所有的迭代,以得到定時器的名稱對象在我的形式。我可以通過正確命名它們來輕鬆分組所有對象,例如在set 1
我有btnStatus1
和tmrString1
然後在set 2
我有btnStatus2
和tmrString2
,只有最後一個字符串是一個數字的變化。
你想用'Tag'代替嗎? –
如果'Tag'會幫助我得到計時器的名字,那就好了。 :)在我的代碼中,我只是試圖使用'Tag',因爲有人提出了這個問題。 –
就你而言,你的代碼使用'Tag'看起來很好。你現在要做的就是單獨改變定時器的標籤。 –