Как удалить последний введенный пользователем символ (программная реализация backspace)?

Здравствуйте.

В форме есть maskedTextBox с маской
___-___ __

Нажатием кнопки нужно удалить последний введенный пользователем символ (аналог backspace). На данный момент не могу разобраться с принципом работы.
Пытался сделать через maskedTextBox1.Text.Length, но в этом случае показывается общая длинна маски, а не количество введенных пользователем символов.
Пытался сделать через while, где сравнивал в цикле символы с конца, и если, символ не был равен цифре, то считал, что это символ маски. Тоже не вышло. Хотя возможно я неверно задал условия цикла или проверки символа.

Жду любых советов или мнений, как это можно сделать.
  • Вопрос задан
  • 204 просмотра
Пригласить эксперта
Ответы на вопрос 2
Комментировать
arxont
@arxont
C# программист
Используйте стэк. На каждое нажатие сохраняйте состояние, а потом просто возвращайте что было.
Stack before;

public Form1()
{
   InitializeComponent();
   before = new Stack();
}


private void buttonBackspace_Click(object sender, EventArgs e)
{
   if (before.Count > 0){
      maskedTextBox1.Text = before.Pop().ToString();  }
}

private void maskedTextBox1_KeyUp(object sender, KeyEventArgs e)
{
   before.Push(maskedTextBox1.Text);
}


PS: Код не особо рабочий, но будет понятно что и где гуглить
Ответ написан
Ваш ответ на вопрос

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

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