Как добавить строку к тексту в TextBox с помощью события TextChanged? - PullRequest
0 голосов
/ 23 января 2020

У меня есть TextBox с именем PercentageText, и я должен добавить "%" к тексту в TextBox, используя событие TextChanged. но он позволяет мне печатать только один символ, в тот момент, когда я набираю второй символ, он вызывает исключение под названием System.StackOverflowException. Вот мой код внутри блока событий TextChanged.

PercentageText.Text = PercentageText.Text.Trim() + "%";

Я также попробовал следующий код

PercentageText.Text = PercentageText.Text+ "%";

1 Ответ

1 голос
/ 23 января 2020

Проблема в том, что вы вносите поправки в текст вашего элемента управления внутри события TextChange, которое затем изменяет текст и снова запускает событие.

Таким образом, вы попадаете в бесконечное l oop и в конечном итоге генерируется исключение stackoverflow.

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

//Defined in your class
private bool skipTextChange = false;


//Amend the TextChange event
if (skipTextChange )
    skipTextChange = false;
else
{
    skipTextChange = true;
    PercentageText.Text = PercentageText.Text.Trim() + "%";
}
...