我有一个RichTextBox,我想在RichTextBox的内容发生变化时重新格式化。我有一个TextChanged事件处理程序。
重新格式化(更改所选区域的颜色)会触发TextChanged事件。它导致TextChange事件,重新格式化,TextChange事件,重新格式化等永不停止的循环。
如何区分应用程序产生的文本更改以及来自用户的文本更改?
我可以查看文字长度,但不确定是否正确。
答案 0 :(得分:3)
你可以有一个bool标志,表明你是否已经进入TextChanged
处理:
private bool _isUpdating = false;
private void Control_TextChanged(object sender, EventArgs e)
{
if (_isUpdating)
{
return;
}
try
{
_isUpdating = true;
// do your updates
}
finally
{
_isUpdating = false;
}
}
这样就可以阻止额外的TextChanged
事件创建循环。