C# 有没有办法对RichTextBox的撤消历史进行分组或临时禁用?

C# 有没有办法对RichTextBox的撤消历史进行分组或临时禁用?,c#,wpf,richtextbox,C#,Wpf,Richtextbox,我现在正在和WPF里RichTextBox里的桌子搏斗。在WPF中,表没有行和列,它们只有行,每个行都有一定数量的单元格。当用户按下“添加列”按钮时,我的程序会向每一行添加一个新单元格 使用此方法的问题是,在用户添加列后,如果他们按“撤消”,则会逐个删除每个单元格,这显然不是用户所期望的 是否有人知道临时禁用向撤消队列添加操作的方法,或对撤消操作进行分组的方法,或我的问题的任何其他解决方案?您可以通过将IsUndoEnabled属性设置为false来禁用undo,也可以使用UndoLimit来限

我现在正在和WPF里RichTextBox里的桌子搏斗。在WPF中,表没有行和列,它们只有行,每个行都有一定数量的单元格。当用户按下“添加列”按钮时,我的程序会向每一行添加一个新单元格

使用此方法的问题是,在用户添加列后,如果他们按“撤消”,则会逐个删除每个单元格,这显然不是用户所期望的


是否有人知道临时禁用向撤消队列添加操作的方法,或对撤消操作进行分组的方法,或我的问题的任何其他解决方案?

您可以通过将
IsUndoEnabled
属性设置为
false
来禁用
undo
,也可以使用
UndoLimit
来限制撤消。通过将此属性设置为
0
,即
UndoLimit=“0”


如果要对撤消操作进行分组(而不是完全禁用撤消),则可以在进行更改后通过将一组编程更改分组,即:

或者,您也可以在语句内部调用:

        using (richTextBox.DeclareChangeBlock())
        {
            // Add column

            // For each row, add a cell to the column.
        }

这不是我想要的。我仍然需要用户能够撤销后,该程序已经摆弄了表。
        richTextBox.BeginChange();
        try
        {
            // Add column

            // For each row, add a cell to the column.
        }
        finally
        {
            richTextBox.EndChange();
        }
        using (richTextBox.DeclareChangeBlock())
        {
            // Add column

            // For each row, add a cell to the column.
        }