代码之家  ›  专栏  ›  技术社区  ›  Cheeso

winforms richtextbox:如何对textchanged执行格式化?

  •  1
  • Cheeso  · 技术社区  · 15 年前

    我有一个richtextbox,当richtextbox的内容更改时,我想重新格式化它。我有一个TextChanged事件处理程序。

    重新格式化(更改所选区域的颜色)会触发TextChanged事件。它会导致一个永不结束的循环,包括textchange事件、重新格式化、textchange事件、重新格式化等。

    如何区分应用程序的文本更改和用户的文本更改?

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

    1 回复  |  直到 15 年前
        1
  •  3
  •   Fredrik Mörk    15 年前

    您可以有一个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;
        }
    }
    

    这样你就停止了额外的 事件 创建循环的事件。