WinForms RichTextBox:如何在TextChanged上执行格式化?

时间:2009-09-21 21:22:35

标签: .net winforms richtextbox

我有一个RichTextBox,我想在RichTextBox的内容发生变化时重新格式化。我有一个TextChanged事件处理程序。

重新格式化(更改所选区域的颜色)会触发TextChanged事件。它导致TextChange事件,重新格式化,TextChange事件,重新格式化等永不停止的循环。

如何区分应用程序产生的文本更改以及来自用户的文本更改?

我可以查看文字长度,但不确定是否正确。

1 个答案:

答案 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事件创建循环。