A: 

I would suggest subclassing the NumericUpDown and overriding the OnTextBoxTextChanged method to raise the ValueChanged event.

You would also need to consider what represents a change, you may get unexpected results if you raise the Valuechanged when the user has typed a single digit and then a second digit. Or a non-numeric character.

benPearce
it seems the NumericUpDown ctrl does not accept non-numeric character
Carlos_Liu
Well, that is that issue solved then!
benPearce
Actually what i need is an event as 'TextChanged' of textbox, but it seems that NumericUpDown does not have this event. And I think adding a new class is not appropriate for my work
Carlos_Liu
A: 

I answered your related other question about numeric updown control:

how to hold the invalid value for NumericUpDown after it loses focus?

You can use the same technique I described there to handle the TextChanged event of the embedded textbox.

Best regards...

Sameh Serag
A: 

CodeProject to the rescue:

A Derived NumericUpDown that Provides Handlers for NumericUpDown's Up and Down Button

Extended NumericUpDown control

And as a bonus, here's a wrapping NumericUpDown:

class WrappingNumericUpDown : NumericUpDown
{
    public override void DownButton()
    {
        if (this.Value == this.Minimum)
            this.Value = this.Maximum;
        else
            base.DownButton();
    }

    public override void UpButton()
    {
        if (this.Value == this.Maximum)
            this.Value = this.Minimum;
        else
            base.UpButton();
    }
}
ohadsc