Introduction
Demonstrates an event handler to clear the Text of a Control after some timeout period.
Background
The Tip to which I offer this as an alternative deals with wrapping a Control in order to add functionality.
But, as I noted in my comment, the particular functionality demonstrated doesn't require wrapping the Control;
all it requires is an event handler, which can belong to any class.
The related Tip is a good demonstration of wrapping a Control, but wrapping should probably be a last resort.
Using the code
The static class below provides an event handler suitable for the TextChanged event of any WinForms Control:
label1.TextChanged += TextClearer.ClearText ;
Later in the application the Control may have its Text changed to some value:
label1.Text = "Done" ;
The Interval defaults to five seconds, but it can be changed as needed.
The Interval value in place when the event handler is called will be used.
TextClearer.Interval = 10 ;
TextClearer: A static class that simply provides an event handler
This is a very simply class, with only the minimum features required for this simple demonstration.
public static partial class TextClearer
{
public static int Interval = 5 ;
public static void
ClearText
(
object control
,
System.EventArgs textchanged
)
{
System.Windows.Forms.Control c = control as System.Windows.Forms.Control ;
if ( ( Interval > 0 ) && ( c != null ) && ( c.Text.Length > 0 ) )
{
System.Windows.Forms.Timer t = new System.Windows.Forms.Timer()
{
Interval = Interval * 1000
} ;
t.Tick += delegate
(
object timer
,
System.EventArgs tick
)
{
t.Stop() ;
c.Text = System.String.Empty ;
return ;
} ;
t.Start() ;
}
return ;
}
}
History
2014-08-07 First submitted