Mohsen
Mohsen

Reputation: 206

generate OnCheckedChanged for custom checkbox

I have a custom checkbox control that inherited from System.Windows.Forms.Control and it hasn't CheckedChanged event. I want to implement CheckedChange same as dot net native CheckBox. How can I do it well ?

Upvotes: 2

Views: 1768

Answers (3)

Francesco Baruchelli
Francesco Baruchelli

Reputation: 7468

You are inheriting fromn Control, not CheckBox, so the solution is similar to the one proposed by Frigik, but it's not exactly that one.

First of all you have to define the event in your class, i.e.:

public event EventHandler CheckedChanged;

In this way every developer using your control can subscribe/unsubscribe to the event. This is not enough, since the event will never be triggered. To do so, you have to define a method to trigger it, and the call this method whenever the state of your control changes:

private void RaiseCheckedChanged()
{
    if (CheckedChanged!= null)
        CheckedChanged(this, EventArgs.Empty);
}

Where this method will be called depends on the structure of your control. For instance if you have a property Checked, you could call the method in its setter:

public bool Checked
{
    get { return _checked; }
    set 
    { 
        _checked = value; 
        RaiseCheckedChanged();
    }
}

Upvotes: 5

Frigik
Frigik

Reputation: 449

Try this:

public class YourCheckBox:CheckBox
    {
        public event EventHandler<EventArgs> OnCheckedChangedCustom;

        protected override void OnCheckedChanged(EventArgs e)
        {
            if (OnCheckedChangedCustom!=null)
            {
                OnCheckedChangedCustom(this, EventArgs.Empty);
            }
            base.OnCheckedChanged(e);
        }
    }

Upvotes: 2

Krunal Mevada
Krunal Mevada

Reputation: 1655

Try this code :

CheckBox chkList1 = new CheckBox();
chkList1.CheckedChanged += new EventHandler(CheckBox_CheckedChanged);

protected void CheckBox_CheckedChanged(object sender, EventArgs e)
{
    // Do your stuff
}

Upvotes: 2

Related Questions