C# 将文本框验证为有限的数字输入

C# 将文本框验证为有限的数字输入,c#,winforms,validation,textbox,keypress,C#,Winforms,Validation,Textbox,Keypress,我有c#windows格式的文本框。这里,我将tsextbox的输入限制为只输入数值 private void txtpref02_KeyPress(object sender, KeyPressEventArgs e) { if (!(Char.IsDigit(e.KeyChar))) e.Handled = true; } 我还有两个要求 我想使文本框只接受一个数字。它应该是0、1、2或3 如何在上面给出的代码中启用退格 试试这个: private void txt

我有c#windows格式的文本框。这里,我将tsextbox的输入限制为只输入数值

private void txtpref02_KeyPress(object sender, KeyPressEventArgs e)
{
    if (!(Char.IsDigit(e.KeyChar)))
        e.Handled = true;
}
我还有两个要求

  • 我想使文本框只接受一个数字。它应该是0、1、2或3
  • 如何在上面给出的代码中启用退格
  • 试试这个:

    private void txtpref02_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (!(Char.IsDigit(e.KeyChar)) || e.KeyChar == (char)8)
            e.Handled = true;
    }
    
    要仅接受一个字符,您可以使用
    文本框的
    MaxLength
    属性

    private void txtpref02_KeyDown(object sender, KeyEventArgs e)
    {
        switch(e.KeyCode)
        {
            case Keys.D0:
            case Keys.NumPad0:
            case Keys.D1:
            case Keys.NumPad1:
            case Keys.D2:
            case Keys.NumPad2:
            case Keys.D3:
            case Keys.NumPad3:
            case Keys.Back:
            case Keys.Delete:
                return;
            default:
                e.SuppressKeyPress = true;
                e.Handled = true;
                break;
        }
    }
    
    此外,您还可以将
    MaxLength
    属性设置为
    1
    ,以限制所指示的字符数


    请注意:此代码使用的是
    KeyDown
    事件,而不是
    KeyPress
    事件。

    现在退格有效,最大长度也有效。谢谢。是否仍有限制输入的数字仅为该(0,1,2,3)集合中的一个。