如何使用 TextChanged 事件将字符串附加到 TextBox 中的文本?

How to append a String to a text in TextBox using TextChanged event?

我有一个名为 PercentageTextTextBox,我必须使用 TextChanged 事件将“%”附加到 TextBox 中的文本。但它只允许我输入一个字符,在我输入第二个字符时,它会抛出一个名为 System.WhosebugException 的异常。 这是我在 TextChanged 事件块中的代码。

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

我也尝试了下面的代码

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

问题是您在 TextChange 事件中修改控件的文本,然后更改文本并再次触发事件。

所以你陷入了一个无休止的循环,最终抛出了一个 Whosebug 异常。

因此您需要在您的方法中仅运行 指明某种方式的代码一次。一种简单的方法是使用布尔值来指示您是否正在处理它。像这样

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


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