【问题标题】:WinForms RichTextBox: how to perform a formatting on TextChanged?WinForms RichTextBox:如何在 TextChanged 上执行格式化?
【发布时间】:2009-09-21 21:22:35
【问题描述】:

我有一个 RichTextBox,我想在 RichTextBox 的内容更改时重新设置它的格式。我有一个 TextChanged 事件处理程序。

重新格式化(更改选定区域的颜色)会触发 TextChanged 事件。它会导致 TextChange 事件、重新格式化、TextChange 事件、重新格式化等的永无止境的循环。

如何区分来自应用的文本更改和来自用户的文本更改?

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

【问题讨论】:

    标签: .net winforms richtextbox


    【解决方案1】:

    你可以有一个布尔标志来表明你是否已经在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 事件创建循环。

    【讨论】:

    • 这很好,但请记住,_isupdating 应该在应用程序更改富文本框文本的任何地方使用,而不仅仅是在处理程序内部。
    猜你喜欢
    • 1970-01-01
    • 2014-03-14
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 2016-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多