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