如何使文本框只接受数字值?

5

我想知道文本框是否有一种合适的方式只接受数字。

比如,我希望它能够“阻止”用户输入“abcd1234”,并只允许他输入“1234”。


当您说要使用字符串阻止用户输入非数字字符时,您是在谈论 TextBox 吗?如果不是,请添加更多关于此的信息。 - MrApnea
是的,文本框,我现在更新它! - Mark Roll
4
可能是 如何制作只接受数字的文本框? 的重复问题。 - Mathias R. Jessen
2
首先,你在使用什么技术?MVC、webpages、WPF、UWP等等?其次,我猜你将其映射到一个属性上,所以你应该将该属性设置为int类型。第三,你可以将输入设置为type=number(这适用于Web,不确定对于WPF、UWP和其他技术是否有效),这样只允许输入数字。 - Spluf
为什么不使用NumericUpDown?如果您只希望有数字,那么这是更好的选择。 - Aimnox
3个回答

18

我尝试了以下代码,对我来说运行良好。 文本框 将允许用户只输入数字

private void txtbox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar)) 
    {
        e.Handled = true;
    }
}

你也可以尝试这样做

e.Handled = !(char.IsDigit(e.KeyChar));

2
用户能够粘贴非数字内容吗? - ABuckau
不,即使用户尝试输入字母也不会被允许。 - sowjanya attaluri
我该如何在主方法中使用我的文本框“调用”txtbox1_KeyPress方法? - Mark Roll
2
复制粘贴...你确定吗? - ABuckau
1
为了防止使用键盘进行文本框的复制/粘贴,请将ShortcutsEnabled属性设置为false。 - Huzaifa

0

你可以使用以下代码来评估输入:

if (txtNumericBox.Text.All(char.IsDigit))
   // Proceed
else
   // Show error

如果你定义了一个带有getter和setter的字符串属性,那么你可以像以下这样使用它:
private string _MyNemericStringr;

public string MyNemericString
{
    get { return _MyNemericStringr; }
    set {
        if (value.All(char.IsDigit))
            _MyNemericStringr = value;
        else
            _MyNemericStringr = "0";
    }
}

在第二个例子中,如果您将任何非数字值分配给属性,则它将返回值"0"。否则,它将像往常一样进行处理。

-1

您可以尝试这个简单的代码。

private void keypressbarcode(object sender, KeyPressEventArgs e)
{
        e.Handled = !(char.IsDigit(e.KeyChar) || e.KeyChar == (char)Keys.Back);
}

它只接受数字退格键


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接