控制数字文本框的数值

39 浏览
0 Comments

控制数字文本框的数值

我有一个TextBox,我希望它只能输入数字。因此,我在Google上搜索并找到了这篇stackoverflow帖子,它已经对我有很大帮助。但是,我希望现在只能输入数字的文本框在输入小于20的内容时显示一个警告。起初,我尝试使用OnTextInput事件,但没有成功,然后我尝试在与数字相关的事件OnPreviewTextInput中处理它。我在两个事件中都使用了相同的代码。

if (!char.IsDigit(e.Text, e.Text.Length - 1))
{
    var text = e.Text;
    int num;
    var success = int.TryParse(text, out num);
    if (!success)
        return;
    if (num <= 20)
    {
        if (MessageBox.Show("您确定要输入小于20的值吗?",
                            "... 您确定吗?", MessageBoxButton.YesNo, MessageBoxImage.Exclamation) ==
                        MessageBoxResult.Yes)
                          e.Handled = true;
         else
         {
            num++;
            textBox.Text = num.ToString();
         }
    }
                e.Handled = true;
}

0
0 Comments

问题出现的原因是没有正确处理控件的KeyDown事件。解决方法是在代码中添加正确的KeyDown事件处理程序来控制文本框的数字值。

代码中的txtNumeric_KeyDown方法是一个事件处理程序,用于处理文本框txtNumeric的KeyDown事件。在该方法中,首先通过char.IsDigit(e.KeyChar)判断按下的键是否是数字键,并将结果赋值给e.Handled。然后通过Int32.Parse(sender.Text)判断文本框中的值是否小于等于20,如果是,则弹出一个确认对话框,根据用户的选择来设置e.Handled的值或者更新文本框的值。

然而,由于代码中没有提供txtNumeric的定义和其他相关代码,我们无法确定具体的问题出现在哪里。如果按照代码的逻辑,问题可能出现在txtNumeric的KeyDown事件处理程序中。如果txtNumeric的KeyDown事件没有正确处理,那么无法正常控制文本框的数字值。

要解决这个问题,可以尝试在代码中添加正确的txtNumeric的KeyDown事件处理程序。可以参考上述代码中的txtNumeric_KeyDown方法来实现正确的处理逻辑。通过正确处理KeyDown事件,可以控制文本框的数字值并解决问题。

总结起来,问题的原因是没有正确处理控件的KeyDown事件,解决方法是在代码中添加正确的KeyDown事件处理程序来控制文本框的数字值。

0
0 Comments

问题的原因是在输入数字的文本框中,当输入的字符发生变化时,无法正确处理输入的数字值。解决方法是使用TextChanged事件处理程序来捕获文本框的变化,并进行筛选。

以下是一个示例实现的代码:

private void yourTextBox_TextChanged(object sender, EventArgs e)
{
    if (!char.IsDigit(e.Text, e.Text.Length - 1))
    {
        var text = e.Text;
        int num;
        var success = int.TryParse(text, out num);
        if (!success)
            return;
        if (num <= 20)
        {
            if (
                MessageBox.Show("Are you sure you want to go underneath 20?",
                    "... You sure?", MessageBoxButton.YesNo, MessageBoxImage.Exclamation) ==
                MessageBoxResult.Yes)
                e.Handled = true;
            else
            {
                num++;
                textBox.Text = num.ToString();
            }
        }
        e.Handled = true;
    }
}

问题的提出者指出,当输入带有百分号的数字时,会导致只有百分号前的数字被处理,无法输入其他数字。建议首先检查文本框中的字符数量是否大于1,以解决这个问题。

另外,有人提出了使用特定的数字控件而不是文本框,并在验证控件或表单时检查数值的建议。还有人建议将输入视为数字而不是字符进行处理。

总之,通过使用TextChanged事件处理程序并进行适当的筛选,可以解决在控制数字输入的文本框中无法正确处理数字值的问题。

0