Подтвердить что ты не робот

Как заставить TextBox принимать только буквенные символы?

Как я могу сделать TextBox только буквенные символы?

4b9b3361

Ответ 1

Вы можете использовать следующий фрагмент:

private void textBox1_TextChanged(object sender, EventArgs e)
{
    if (!System.Text.RegularExpressions.Regex.IsMatch(textBox1.Text, "^[a-zA-Z]"))
    {
        MessageBox.Show("This textbox accepts only alphabetical characters");
        textBox1.Text.Remove(textBox1.Text.Length - 1);
    }
}

Ответ 2

Вы можете попробовать обработать событие KeyPress для текстового поля

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

Кроме того, предположим, что разрешить backspace, если вы хотите удалить какой-либо текст, это должно работать отлично для вас

ИЗМЕНИТЬ

Вышеприведенный код не будет работать для вставки в поле, для которого я считаю, что вам нужно будет использовать событие TextChanged, но тогда это будет немного сложнее, если вам придется удалить неправильный char или выделить его и поместите курсор для пользователя, чтобы сделать коррекцию. Или, может быть, вы могли бы подтвердить, как только пользователь введет полный текст и удалит элемент управления.

Ответ 3

private void textbox1_KeyDown_1(object sender, KeyEventArgs e)
{
    if (e.Key >= Key.A && e.Key <= Key.Z)
    {
    }
    else
    {
       e.Handled = true;
    }
}

Ответ 4

Самый простой способ - обработать TextChangedEvent и проверить, что было напечатано:

string oldText = string.Empty;
    private void textBox2_TextChanged(object sender, EventArgs e)
    {
        if (textBox2.Text.All(chr => char.IsLetter(chr)))
        {
            oldText = textBox2.Text;
            textBox2.Text = oldText;

            textBox2.BackColor = System.Drawing.Color.White;
            textBox2.ForeColor = System.Drawing.Color.Black;
        }
        else
        {
            textBox2.Text = oldText;
            textBox2.BackColor = System.Drawing.Color.Red;
            textBox2.ForeColor = System.Drawing.Color.White;
        }
        textBox2.SelectionStart = textBox2.Text.Length;
    }

Это версия без регулярного выражения, если вы предпочитаете. Это заставит текстовое поле мигать при плохом вводе. Обратите внимание, что он также поддерживает операции вставки.

Ответ 5

Введите код в текстовое_KeyPress событие как

 private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {

        if (!char.IsLetter(e.KeyChar))
        {
            e.Handled = true;
        }
    }

Ответ 6

        if (System.Text.RegularExpressions.Regex.IsMatch(textBox1.Text, "^[a-zA-Z]+$"))
        { 
        }
        else
        {
            textBox1.Text = textBox1.Text.Remove(textBox1.Text.Length - 1);
            MessageBox.Show("Enter only Alphabets");


        }

Пожалуйста, попробуйте это

Ответ 7

Этот работает абсолютно нормально...

 private void manufacturerOrSupplierTextBox_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (char.IsControl(e.KeyChar) || char.IsLetter(e.KeyChar))
        {
            return;
        }
        e.Handled = true;
    }

Ответ 8

private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar >= '0' && e.KeyChar <= '9')
                e.Handled = true;
            else
                e.Handled = false;
        }

Ответ 9

Попробуйте это

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

Он также позволяет белым пространствам

Ответ 10

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
      if (!char.IsControl(e.KeyChar) && !char.IsLetter(e.KeyChar) &&
         (e.KeyChar !='.'))
        { 
          e.Handled = true;
          MessageBox.Show("Only Alphabets");
        }
    }

Ответ 11

вы можете попробовать следующий код, предупреждающий во время нажатия клавиши

private void tbOwnerName_KeyPress(object sender, KeyPressEventArgs e)
    {

        //===================to accept only charactrs & space/backspace=============================================

        if (e.Handled = !(char.IsLetter(e.KeyChar) || e.KeyChar == (char)Keys.Back || e.KeyChar == (char)Keys.Space))
        {
            e.Handled = true;
            base.OnKeyPress(e);
            MessageBox.Show("enter characters only");
        }

Ответ 12

Вот мое решение, и оно работает, как и планировалось:

string errmsg = "ERROR : Wrong input";
ErrorLbl.Text = errmsg;

if (e.Handled = !(char.IsLetter(e.KeyChar) || e.KeyChar == (char)Keys.Back || e.KeyChar == (char)Keys.Space))
{
  ErrorLbl.Text = "ERROR : Wrong input";
}
else ErrorLbl.Text = string.Empty;
if (ErrorLbl.Text == errmsg)
{
  Nametxt.Text = string.Empty;
}

Ответ 13

Попробуйте выполнить следующий код в событии KeyPress текстового поля

if (char.IsLetter(e.KeyChar) == false  & 
        Convert.ToString(e.KeyChar) != Microsoft.VisualBasic.Constants.vbBack)
            e.Handled = true