C# 如何在文本框中只接受某些字符?

C# 如何在文本框中只接受某些字符?,c#,textbox,C#,Textbox,如何限制textbox仅接受字母A、B、C、D?我尝试过这个代码,但它仍然接受字母A、B、C、D之外的字母 e.Handled = !char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar); 我同意这样的评论,如果你只想要一个字符,那么实际使用组合框可能更合适,但若您计划允许用户输入一系列有限字符,那个么可能值得一看我几年前写的一篇关于如何限制文本框中允许的字符的文章,该文章可在“”中找到 继丹丹78的评论之后,重要代码如下:

如何限制textbox仅接受字母A、B、C、D?我尝试过这个代码,但它仍然接受字母A、B、C、D之外的字母

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

我同意这样的评论,如果你只想要一个字符,那么实际使用组合框可能更合适,但若您计划允许用户输入一系列有限字符,那个么可能值得一看我几年前写的一篇关于如何限制文本框中允许的字符的文章,该文章可在“”中找到

继丹丹78的评论之后,重要代码如下:

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress

    Dim allowedChars As String = "0123456789"

    If allowedChars.IndexOf(e.KeyChar) = -1 Then
        ' Invalid Character
        e.Handled = True
    End If
End Sub

将KeyPressEventHandler附加到文本框:

textBox.KeyPress += new KeyPressEventHandler(keyPressed);
然后创建一个事件来处理这些字母:

private void keyPressed(Object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == 'A' || e.KeyChar == 'B' || e.KeyChar == 'C' || e.KeyChar == 'D') 
    {
        e.Handled = true;
    }
}

这将停止文本框接受这些字母

在您的
文本框
按键
事件中,您可以使用此简单代码来实现您的目标:

if (e.KeyChar < 'A' || e.KeyChar > 'D')
    e.Handled = true;
if(e.KeyChar<'A'| e.KeyChar>'D')
e、 已处理=正确;
如果您希望接受小写和大写A-D:

if ((e.KeyChar < 'A' || e.KeyChar > 'D') && (e.KeyChar <'a' || e.KeyChar > 'd'))
    e.Handled = true;
if((e.KeyCharD')&(e.KeyChar'D'))
e、 已处理=正确;
如果您还希望允许“特殊”字符,如退格、删除等,则还需要允许ASCII代码32以下的字符:

if ((e.KeyChar < 'A' || e.KeyChar > 'D') && (e.KeyChar <'a' || e.KeyChar > 'd') && e.KeyChar > 32)
    e.Handled = true;
if((e.KeyCharD')&&(e.KeyChar'D')&&e.KeyChar>32)
e、 已处理=正确;
在进一步的用户注释之后,为了仅允许a-D、a-D和退格,以下内容应足够:

if ((e.KeyChar < 'A' || e.KeyChar > 'D') && (e.KeyChar <'a' || e.KeyChar > 'd') && e.KeyChar != 8)
    e.Handled = true;
if((e.KeyChar<'A'| e.KeyChar>'D')&&(e.KeyChar'D')&&e.KeyChar!=8)
e、 已处理=正确;

您想做什么?您是否考虑使用组合框而不是文本框?这可能更适合你的需要。这是一个有效的链接唯一的答案,也接近博客垃圾邮件。当你的博客消失时会发生什么?答案是无用的。请编辑它以添加您博客文章中的基本内容。在我使用您的代码后,我无法删除我键入的内容。但它起作用了,文本框除了A-D之外不接受字母。但它不可能erased@julianconcepcion只需添加代码32以下字符的额外检查:
和&e.KeyChar>32
。我将编辑帖子以反映这一点。如果我只需要backspace怎么办?backspace的
KeyChar
值为8,所以只需将最后一次检查从
e.KeyChar>32
更改为
e.KeyChar!=8