Como manter o valor inválido para NumericUpDown depois que ele perde o foco?

No meu projeto, há um UserControl que inclui uma ctrl NumericUpDown e seu intervalo de valores válido éde 10 a 100,

portanto, se o usuário inserir 200 na ctrl do NumericUpDown, seu valor será alterado automaticamente para 100 depois que o foco for alterado para outra ctrl, parecerá um pouco curioso para o cliente, porque eles podem clicar no botão OK após a entrada 200 na ctrl do NumericUpDown, eles precisa de uma caixa de mensagem que informe o valor digitado não está no intervalo.

Mas a questão é que o valor para NumericUpDown será alterado automaticamente depois que o foco for alterado se a entrada de valor estiver fora do intervalo.

Então, como implementar isso?

Sameh Serag, este é o código que eu testei. Eu adicionei um botão no formulário, mas não fiz nada. O resultado para mim é que depois de inserir 200 e clicar no botão, apenas uma caixa de mensagens com o valor 100 é exibida. Depois de inserir 200 e pressionar a tecla tab, ele exibirá apenas uma caixa de mensagens com o valor 200 e o valor do texto em NumericUpDown será alterado para 100. Tão curioso :-) De qualquer forma, muito obrigado pela sua ajuda! BTW, a versão do framework .Net é 2.0 com sp2 para mim.

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);
    }
}

questionAnswers(1)

yourAnswerToTheQuestion