Hi,
um dem Nutzer zu signalisieren, dass die Eingabe registriert wurde, lasse ich den Entsprechenden Button oder das parent Panel kurzzeitig einfärben. Die schnelle Variante wäre im Designer jeweils einen Timer anzulegen und mit dem entsprechenden Button zu verknüpfen.
Nun nimmt die Anzahl der Funktionen mit Feedback zu und ich habe keine Lust dafür jedes Mal einen eigenen Timer anzulegen.
Meine Idee war eine eigene Klasse anzulegen, der eine oder mehrere Controls übergeben werden, die dann jeweils einzufärben sind.
So sieht das Ganze dann aus:
Ein Aufruf sieht dann so aus:
Funktioniert genauso wie es soll. Aber gibt es elegantere/effizientere Wege so einen allgemeinen Timer zu implementieren? Und reicht es den Timer zu killen, oder sollte das ganze Objekt für den GC freigegeben werden?
um dem Nutzer zu signalisieren, dass die Eingabe registriert wurde, lasse ich den Entsprechenden Button oder das parent Panel kurzzeitig einfärben. Die schnelle Variante wäre im Designer jeweils einen Timer anzulegen und mit dem entsprechenden Button zu verknüpfen.
Nun nimmt die Anzahl der Funktionen mit Feedback zu und ich habe keine Lust dafür jedes Mal einen eigenen Timer anzulegen.
Meine Idee war eine eigene Klasse anzulegen, der eine oder mehrere Controls übergeben werden, die dann jeweils einzufärben sind.
So sieht das Ganze dann aus:
VB.NET-Quellcode
- Public Class SaveFeedback
- Private ControlList As New List(Of Control)
- Private defaultColor As Color
- Dim timerSetBack As New Timer
- Public Sub New(clHighlight As Color, clDef As Color, cntrls As List(Of Control), intervalMs As Integer)
- AddHandler timerSetBack.Tick, AddressOf timersetback_tick
- timerSetBack.Interval = intervalMs
- ControlList = cntrls
- defaultColor = clDef
- For Each c As Control In ControlList
- c.BackColor = clHighlight
- Next
- timerSetBack.Start()
- End Sub
- Public Sub New(clHighlight As Color, clDef As Color, cntrl As Control, intervalMs As Integer)
- AddHandler timerSetBack.Tick, AddressOf timersetback_tick
- timerSetBack.Interval = intervalMs
- ControlList.Add(cntrl)
- defaultColor = clDef
- For Each c As Control In ControlList
- c.BackColor = clHighlight
- Next
- timerSetBack.Start()
- End Sub
- Private Sub timersetback_tick(sender As Object, e As EventArgs)
- For Each c As Control In ControlList
- c.BackColor = defaultColor
- Next
- ControlList.Clear()
- timerSetBack.Dispose()
- End Sub
- End Class
Ein Aufruf sieht dann so aus:
Funktioniert genauso wie es soll. Aber gibt es elegantere/effizientere Wege so einen allgemeinen Timer zu implementieren? Und reicht es den Timer zu killen, oder sollte das ganze Objekt für den GC freigegeben werden?
Option strict = on
If it's stupid and it works it ain't stupid.
If it's stupid and it works it ain't stupid.