Есть ли способ группировать или временно отключать историю отмены для RichTextBox?
Я сейчас борюсь с таблицами внутри RichTextBoxs в WPF. В WPF в таблицах нет строк и столбцов, у них просто есть строки, каждая из которых имеет определенное количество ячеек. Когда пользователь нажимает кнопку "Добавить столбец", моя программа добавляет новую ячейку в каждую строку.
Проблема с использованием этого метода заключается в том, что после добавления пользователем столбца, если они нажимают кнопку отмены, он удаляет каждую ячейку один за другим, что явно не то, что ожидал пользователь.
Кто-нибудь знает, как временно отключить добавление действий в очередь отмены, или способ группировать действия отмены или любое другое решение моей проблемы?
Ответы
Ответ 1
Если вы хотите группировать действия отмены (а не полностью отменить отмену), вы можете сгруппировать набор программных изменений через TextBoxBase.BeginChange()
, затем, после внесения изменений TextBoxBase.EndChange()
, то есть:
richTextBox.BeginChange();
try
{
// Add column
// For each row, add a cell to the column.
}
finally
{
richTextBox.EndChange();
}
Или, что то же самое, вы можете вызвать TextBoxBase.DeclareChangeBlock()
внутри using
:
using (richTextBox.DeclareChangeBlock())
{
// Add column
// For each row, add a cell to the column.
}
Ответ 2
вы можете отключить undo
, установив для свойства IsUndoEnabled
значение false
или вы можете ограничить отмену с помощью UndoLimit
. вы можете отключить отмену, установив это свойство на 0
, то есть., UndoLimit="0"
<RichTextBox Name="myRitchTextBox" IsUndoEnabled="False" />