2016-07-30 5 views
0

aufgrund einiger VS Probleme, die ich begonnen haben, Timer zur Laufzeit wieMe.Controls für Timer erklärt zur Laufzeit

Private WithEvents _TmrAll As New Timer 

nun erklärt, wenn ich Shutdown meine app, ich alle Timer deaktivieren möchten. Ich benutzte es, um wie so:

Private Sub pDisableAllTimers() 

    For Each T As Control In Me.Controls 
     Dim sName As String = T.GetType.Name 
     If sName = "Timer" Then 
      T.Enabled = False 
     End If 
    Next T 
End Sub 

Aber für die Timer zur Laufzeit erklärt, dies scheint nicht zu funktionieren. Zumindest sind sie nicht in der Schleife gefunden.

Vielen Dank.

+2

Sie gehören nicht zu der Sammlung Kontrollen, können Sie entweder jede Steuer Adresse nach Namen oder fügen Sie sie zu den Kontrollen Sammlung oder fügen Sie sie zu einer anderen Sammlung hinzu –

+0

Timer sind Komponenten, also gehen sie nicht in die Controls-Auflistung. Sie haben den Verweis auf den, den Sie erstellt haben _TmrAll das verwenden. – Plutonix

Antwort

0

Wenn Sie dies zur Laufzeit ausführen möchten, müssen Sie den Container components (falls erforderlich) erstellen und Ihre Timer hinzufügen. Weitere Informationen finden Sie auf this

If components Is Nothing Then 
     components = New System.ComponentModel.Container() 
    End If  
    components.Add(_TmrAll) 

und dann Code pDisableAllTimers wie folgt:

Private Sub pDisableAllTimers() 

    For Each T As Component In components.Components 
     Dim sName As String = T.GetType.Name 
     If sName = "Timer" Then 
      CType(T, Timer).Enabled = False 
     End If 
    Next T 

End Sub