2015-08-17 15 views
14

我目前正在與RichTextBoxs中的WPF裏面的表搏鬥。在WPF中,表格沒有行和列,它們只有行,每行都有一定數量的單元格。當用戶按下「添加列」按鈕時,我的程序會爲每一行添加一個新單元格。有沒有辦法對RichTextBox進行分組或暫時禁用撤消歷史記錄?

使用此方法的問題是在用戶添加一列後,如果他們按下撤消,它會逐個刪除每個單元格,顯然不是用戶期望的。

有沒有人知道一種方法來臨時禁用添加到撤消隊列的操作,或者一種將撤消操作或任何其他解決方案分配給我的問題的方法?

回答

16

如果你想撤消的操作(而不是禁止將其完全消除),您可以將通過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. 
     } 
+0

哦,很好,方便知道,謝謝。 – Loocid

2

您可以通過將IsUndoEnabled屬性設置爲false來禁用undo,或者您可以使用UndoLimit限制撤銷。你可以通過這個屬性設置爲0,禁用撤消即,UndoLimit="0"

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

這並不完全是我之後的事情。我仍然需要用戶在程序擺弄桌子後才能撤消。 – Loocid

相關問題