我有一个richtextbox,当richtextbox的内容更改时,我想重新格式化它。我有一个TextChanged事件处理程序。
重新格式化(更改所选区域的颜色)会触发TextChanged事件。它会导致一个永不结束的循环,包括textchange事件、重新格式化、textchange事件、重新格式化等。
如何区分应用程序的文本更改和用户的文本更改?
我可以检查文本长度,但不确定是否正确。
您可以有一个bool标志,指示您是否已经在 TextChanged 处理:
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; } }
这样你就停止了额外的 事件 创建循环的事件。
事件