TextBox 只允许输入特定范围的数字,但不接受某些正确的值
TextBox only allow enter certain range of numbers, but its not accept some correct value
晚上好,
试图使 WPF 文本框只接受 3 到 2813 之间的双精度值
在下面的代码中,我不能写任何以 1 或 2 开头的值
喜欢 11,22,113,215,2008
private bool IsValid(string str)
{
double i;
return double.TryParse(str, out i) && i >= 3 && i <= 2813;
}
private void L_Text_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
e.Handled = !IsValid(((TextBox)sender).Text + e.Text);
}
您可以做 2 件事
- 您可以评估它是否以特定字符开头,然后解析该字符
- 您可以使用 https://help.syncfusion.com/wpf/double-textbox/getting-started
PreviewTextInput 在用户按下某个键时发生。所以我们无法知道此时用户是打算写“2”还是“22”。
要评估该值,我们必须确保用户已完成写入。为此,您可以使用 LostFocus 事件。
private bool IsValid(string str)
{
double i;
return double.TryParse(str, out i) && i >= 3 && i <= 2813;
}
private void TextBox_LostFocus(object sender, RoutedEventArgs e)
{
var txt = sender as TextBox;
if (!IsValid((txt.Text)))
{
//invalid delete text
txt.Text = "";
}
}
详细验证:
晚上好,
试图使 WPF 文本框只接受 3 到 2813 之间的双精度值
在下面的代码中,我不能写任何以 1 或 2 开头的值
喜欢 11,22,113,215,2008
private bool IsValid(string str)
{
double i;
return double.TryParse(str, out i) && i >= 3 && i <= 2813;
}
private void L_Text_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
e.Handled = !IsValid(((TextBox)sender).Text + e.Text);
}
您可以做 2 件事
- 您可以评估它是否以特定字符开头,然后解析该字符
- 您可以使用 https://help.syncfusion.com/wpf/double-textbox/getting-started
PreviewTextInput 在用户按下某个键时发生。所以我们无法知道此时用户是打算写“2”还是“22”。 要评估该值,我们必须确保用户已完成写入。为此,您可以使用 LostFocus 事件。
private bool IsValid(string str)
{
double i;
return double.TryParse(str, out i) && i >= 3 && i <= 2813;
}
private void TextBox_LostFocus(object sender, RoutedEventArgs e)
{
var txt = sender as TextBox;
if (!IsValid((txt.Text)))
{
//invalid delete text
txt.Text = "";
}
}
详细验证: