Derived Controls

Sometimes it is not necessary to create your own control from scratch. For instance, you may want to extend the behavior of an existing control type. You can derive from an existing control as you might derive from any class. Imagine, for example, that you would like a button to maintain a count of the number of times it has been clicked. Such a button might be useful in any number of applications; unfortunately, the ASP.NET Button control does not provide this functionality.

To overcome this limitation of the Button class, you’ll derive a new custom control from System.Web.UI.WebControls.Button. Add a new ASP.NET server control to your CustomControls project, called CountedButton.cs. You’ll find the option by clicking Project → Add New Item → Web, as shown in Figure 15-12.

Adding a new ASP.NET server control

Figure 15-12. Adding a new ASP.NET server control

Delete everything in the file and replace it with the following code. You begin by deriving your new class from the existing Button type:

using System;
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace CustomControls
{
   [DefaultProperty("Text")]
   [ToolboxData("<{0}:CountedButton runat=server></{0}:CountedButton>")]
   public class CountedButton : Button
   {

The work of this class is to maintain its state: how many times the button has been clicked. You provide a public property, Count, which is backed not by a private ...

Get Programming ASP.NET 3.5, 4th Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.