如何在验证之前访问NumericUpDown控件的文本?

时间:2011-12-16 22:19:45

标签: .net winforms validation .net-2.0 numericupdown

我有一个带有System.Windows.Forms.NumericUpDown控件的表单。

假设范围是从0到100,并且当前值(通过微调器到达)是100.我可以输入一个超出允许范围的数字(比如567)但是当我单击OK时重置值的表单,它只是默认将范围外值设置为100并关闭表单。

客户希望显示该号码超出范围的明确消息。所以,我查看了关闭表单上的NumericUpDown.Text属性,但该属性给了我“100”而不是“567”。

在哪里(或如何)可以“捕获”控件中出现的文字是“567”的事实?

2 个答案:

答案 0 :(得分:7)

您可以使用this question中的答案,通过获取TextBoxNumericUpDown的引用并处理其Validating事件来捕获无效值。在您的处理程序中,TextBox.Text属性将具有要测试的无效值。适用于.NET 2.0 Winforms。

答案 1 :(得分:2)

您可以尝试这一点,唯一的问题是该值仍将重置为100,但仍会通知用户超出范围值:

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            int val = Convert.ToInt32(((UpDownBase)numericUpDown1).Text);

            if (val > 100)
            {
                MessageBox.Show("The value " + ((UpDownBase)numericUpDown1).Text + 
                " is out of range", "Validation Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

                e.Cancel = true;
            }
        }