我有一个带有System.Windows.Forms.NumericUpDown控件的表单。
假设范围是从0到100,并且当前值(通过微调器到达)是100.我可以输入一个超出允许范围的数字(比如567)但是当我单击OK时重置值的表单,它只是默认将范围外值设置为100并关闭表单。
客户希望显示该号码超出范围的明确消息。所以,我查看了关闭表单上的NumericUpDown.Text
属性,但该属性给了我“100”而不是“567”。
在哪里(或如何)可以“捕获”控件中出现的文字是“567”的事实?
答案 0 :(得分:7)
您可以使用this question中的答案,通过获取TextBox
内NumericUpDown
的引用并处理其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;
}
}