如何将某些字符接受到文本框中?

时间:2014-02-20 10:37:43

标签: c# textbox

如何限制文本框仅接受字母A,B,C,D?我已经尝试过这段代码,但它仍然接受字母A,B,C,D之外的字母。

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

3 个答案:

答案 0 :(得分:3)

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

除了DanDan78在下面的评论,重要的代码是;

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

答案 1 :(得分:1)

KeyPress的{​​{1}}事件中,您只需使用此简单代码即可实现目标:

TextBox

如果您希望接受小写和大写A-D:

if (e.KeyChar < 'A' || e.KeyChar > 'D')
    e.Handled = true;

如果您还希望允许退格,删除等“特殊”字符,则还需要允许ASCII码32以下的字符:

if ((e.KeyChar < 'A' || e.KeyChar > 'D') && (e.KeyChar <'a' || e.KeyChar > 'd'))
    e.Handled = true;

在进一步的用户评论之后,为了仅允许A-D,a-d和退格,以下内容应该足够:

if ((e.KeyChar < 'A' || e.KeyChar > 'D') && (e.KeyChar <'a' || e.KeyChar > 'd') && e.KeyChar > 32)
    e.Handled = true;

答案 2 :(得分:0)

将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;
    }
}

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

相关问题