Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

Adding Functionality To .NET Controls

0.00/5 (No votes)
7 Aug 2014 1  
This is an alternative for Adding Functionality To .NET Controls

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

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here