有没有办法分组或暂时禁用RichTextBox的撤消历史记录?

时间:2015-08-17 04:49:06

标签: c# wpf richtextbox

我目前正在与WPF中的RichTextBoxs中的表格进行斗争。在WPF中,表格没有行和列,它们只有行,每行都有一定数量的单元格。当用户按下"添加列"按钮,我的程序为每一行添加一个新单元格。

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

是否有人知道暂时禁用撤消队列添加操作的方法,或者将撤消操作或其他解决方案分组到我的问题的方法?

2 个答案:

答案 0 :(得分:17)

如果您想分组撤消操作(而不是完全停用撤消操作),您可以通过TextBoxBase.BeginChange()对一组程序化更改进行分组,然后在进行更改后{{3} },即:

        richTextBox.BeginChange();
        try
        {
            // Add column

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

或者,等效地,您可以在TextBoxBase.EndChange()声明中调用TextBoxBase.DeclareChangeBlock()

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

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

答案 1 :(得分:2)

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

<RichTextBox  Name="myRitchTextBox" IsUndoEnabled="False" />