C# Windows窗体。将用户输入限制在一定范围内

C# Windows窗体。将用户输入限制在一定范围内,c#,C#,我正在为类创建一个windows窗体程序,并试图将“权重”文本框的输入限制在1-1000之间。我得到了要解析为双精度的用户输入,但由于某种原因,我创建的错误消息不会在正确的时间按预期弹出。(只有当我输入超过5位的数字时,才会弹出错误消息…因此我可以输入2222或10000而不出错) 不应使用按键,而应使用TextChanged事件 因为如果使用按键,新字符还不是控件文本的一部分 private void inputTextBox_TextChanged(object sender, EventA

我正在为类创建一个windows窗体程序,并试图将“权重”文本框的输入限制在1-1000之间。我得到了要解析为双精度的用户输入,但由于某种原因,我创建的错误消息不会在正确的时间按预期弹出。(只有当我输入超过5位的数字时,才会弹出错误消息…因此我可以输入2222或10000而不出错)


不应使用按键,而应使用TextChanged事件 因为如果使用按键,新字符还不是控件文本的一部分

private void inputTextBox_TextChanged(object sender, EventArgs e)
        {
            var inputTextBox = sender as TextBox;
            var sourceValue = inputTextBox.Text;
            double doubleValue;
            if (double.TryParse(sourceValue, out doubleValue))
            {
                if (doubleValue > 1000)
                {
                    MessageBox.Show("Cannot be greater than 1000");
                }
            }
        }

为什么不使用控件执行此任务?谢谢您的回复。我的老师要求我使用用户输入。你能解释一下在什么情况下你称这个代码吗?你需要显示更多的代码;代码何时运行是非常重要的(即,它在哪个事件处理程序中)。此外,严格来说,NumericUpDown仍然是用户输入(虽然不是字符串输入)……问题是因为当您收到按键事件时,输入的新字符不是控件文本的一部分。
private void inputTextBox_TextChanged(object sender, EventArgs e)
        {
            var inputTextBox = sender as TextBox;
            var sourceValue = inputTextBox.Text;
            double doubleValue;
            if (double.TryParse(sourceValue, out doubleValue))
            {
                if (doubleValue > 1000)
                {
                    MessageBox.Show("Cannot be greater than 1000");
                }
            }
        }