TextBox只允许输入一定范围的数字,但它不接受某些正确的值。

35 浏览
0 Comments

TextBox只允许输入一定范围的数字,但它不接受某些正确的值。

晚上好,

我正在尝试让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);
}

0
0 Comments

文本框只允许输入特定范围的数字,但是却无法接受一些正确的值。这个问题出现的原因有两个解决方法。方法一是判断输入的值是否以特定字符开头,然后进行解析。方法二是使用Syncfusion的DoubleTextBox组件。

方法一的解决方法是判断输入的值是否以特定字符开头,然后进行解析。具体实现的代码如下所示:

if (textBoxValue.StartsWith("X"))

{

// 进行解析操作

int parsedValue = int.Parse(textBoxValue.Substring(1));

// 处理解析后的值

}

方法二的解决方法是使用Syncfusion的DoubleTextBox组件。该组件可以限制文本框只能输入特定范围的数字,并且能够接受正确的值。具体使用的代码如下所示:

通过使用上述两种方法,可以解决文本框只允许输入特定范围的数字,但是却无法接受一些正确的值的问题。方法一通过判断特定字符开头并解析的方式,方法二通过使用Syncfusion的DoubleTextBox组件来限制输入范围并接受正确的值。

0
0 Comments

文本框只允许输入一定范围的数字,但它不接受某些正确的值。这个问题出现的原因是PreviewTextInput事件在用户按下键盘时触发,所以我们无法确定用户此时是想输入"2"还是"22"。为了评估值,我们必须确定用户完成了输入。我们可以使用LostFocus事件来实现这个目的。

在代码中,我们定义了一个IsValid方法,用于验证输入的字符串是否为一个介于3和2813之间的有效数字。在TextBox的LostFocus事件处理程序中,我们将TextBox的文本作为参数传递给IsValid方法进行验证。如果验证不通过,我们将文本设为空字符串。

详细的验证可以参考链接:https://stackoverflow.com/a/37255232/1431001

我尝试了你的代码,但是文本框现在接受小于3和错误的值。实际上,PreviewKeyInput事件不适合用于验证,所以我对答案进行了修改。

0