Удалить последний символ при нажатии клавиши в текстовом поле C# - PullRequest
0 голосов
/ 10 февраля 2020

Я пытаюсь заблокировать пользователя, нажмите эту же клавишу (например, если у пользователя есть «asd» в TextBox и пользователь нажимает «x», текстовое поле все еще содержит «asd», но не вставляет «x»), я попытался использовать KeyDown и KeyUp, но он удаляет последний символ, но вставляет нажатые («asx» удаляет «d»). Извините за мой плохой английский sh.

private void txtInsert_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == 104) //I'm trying to delete "h"
        {
            string cadena = txtInsert.Text;
            cadena = cadena.Substring(0, cadena.Length - 1);
            txtInsert.Text = cadena;
            string cadena = "";
            for (int i = 0; i < txtInsert.TextLength-1; i++)
            {
                cadena += txtInsert.Text[i];
            }
            txtInsert.Text = "";
            txtInsert.Text = cadena;
        }
    }

1 Ответ

0 голосов
/ 10 февраля 2020

Попытка KeyPress событие (поэтому мы должны работать с char, а не клавиша , которая может быть, скажем, сдвиг влево ) и Handled для предотвращения пользовательский ввод (пример WinForms):

private void myTextBox_KeyPress(object sender, KeyPressEventArgs e) {
  TextBox box = sender as TextBox;

  // Do nothing if 
  e.Handled = 
    e.KeyChar >= ' ' &&    // key is not control one (e.g. not backspace)
    box.Text.Length >= 3;  // Text Box Text has Length >= 3
}

Если вы хотите запретить добавление 'h'

  // Do nothing on 'h' character
  e.Handled = e.KeyChar == 'h';
...