¿Cómo mantener el valor no válido para NumericUpDown después de que pierde el foco?

En mi proyecto hay un UserControl que incluye un Ctrl NumericUpDown, y su rango de valores válido esde 10 a 100,

así que si el usuario ingresa 200 en NumericUpDown ctrl, entonces su valor cambiará a 100 automáticamente después de que el foco cambie a otro ctrl, parece un poco curioso para el cliente, porque pueden hacer clic en el botón Aceptar después de ingresar 200 en NumericUpDown ctrl, ellos necesitan un cuadro de mensaje que les indique que el valor que ingresaron no está en el rango.

Pero la pregunta es que el valor de NumericUpDown cambiará automáticamente después de que cambie el foco si la entrada de valor está fuera de su rango.

Entonces, ¿cómo implementar esto?

Sameh Serag, Este es el código que he probado. He agregado un botón en el formulario pero no hice nada. El resultado para mí es que después de ingresar 200 y hacer clic en el botón, solo se muestra un cuadro de mensaje con el valor 100. Después de ingresar 200 y presionar la tecla de tabulación, solo mostrará un cuadro de mensaje con el valor 200 y el valor del texto en NumericUpDown se cambia a 100. Muy curioso :-) De todos modos, ¡muchas gracias por su ayuda! Por cierto, la versión de .Net framework es 2.0 con sp2 para mí.

public partial class Form1 : Form
{
    private TextBox txt;

    public Form1()
    {
        InitializeComponent();

        txt = (TextBox)numericUpDown1.Controls[1];
        txt.Validating += new CancelEventHandler(txt_Validating);
    }

    void txt_Validating(object sender, CancelEventArgs e)
    {
        MessageBox.Show(txt.Text);
    }
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta