@goldolov_na

Как в этом коде textbox'а сделать,чтобы можно было нажимать клавишу backspace(стереть)?

нужно доработать код,чтобы клавиша backspace была активна(в текстбоксе работала)
private void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            
            string Symbol = e.KeyChar.ToString();

            if (!Regex.Match(Symbol, @"[а-яА-Я]").Success )
            {
                e.Handled = true;
            }

        }
  • Вопрос задан
  • 1152 просмотра
Решения вопроса 1
lexxpavlov
@lexxpavlov
Программист, преподаватель
Использовать KeyDown вместо KeyPress. В KeyDown приходит не печатаемый символ, а код клавиши, в том числе, и управляющие клавиши.

В вашем случае нужно вызывать оба события. Вначале вызывается KeyDown, и если он не выполнил работу обработки (не указан e.Handled = true), то вызовется обработчик KeyPress.

Вот примерный код обработки backspace:
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Back)
    {
        var selectionStart = textBox1.SelectionStart;
        if (textBox1.SelectionLength > 0)
        {
            textBox1.Text = textBox1.Text.Substring(0, selectionStart) + textBox1.Text.Substring(selectionStart + textBox1.SelectionLength);
            textBox1.SelectionStart = selectionStart;
        }
        else if (selectionStart > 0)
        {
            textBox1.Text = textBox1.Text.Substring(0, selectionStart - 1) + textBox1.Text.Substring(selectionStart);
            textBox1.SelectionStart = selectionStart - 1;
        }
        
        e.Handled = true;
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы