This is a simple class with a shared method for asynchronously fading a color property from one color to another. I needed a way to indicate to users that they had saved or deleted something, so I wanted a way to slowly fade the background color of a textbox.
There are three overloads of the shared method. The basic method takes seven parameters:
container - The object that contains the color property to be fading. For example, a text box or label.
colorProperty - The name of the color property to change - this has to be a string, for example, "ForeColor" or "BackColor".
startColor - The color that will begin the fade.
endColor - The color that will end the the fade.
steps - The number of steps to take in fading from the start color to the end color.
delay - A delay in milliseconds between each step in the fade.
callback - An optional function that will be called when the fade completes.
The second overload takes an intermediate color and the number of steps for fading, and the final overload takes a list of colors and steps.
I wanted to simply pass the color property itself, and pass it
byRef so that I could change it, but I couldn't figure out how to do it. I don't know if you can pass a
byRef parameter to another thread. Anyway, that's why the method requires a container object and the name of the property to change.
Dim textBox1 As New TextBox()
Visual.FadeColor(textBox1, "BackColor", Color.Green, Color.White, _
25, 25, AddressOf DoneFading)
Private Sub DoneFading(ByVal container As Object, ByVal colorProperty As String)
Overall, it's pretty simple, but hopefully useful. If you have any suggestions, feel free to let me know.