2011-12-21 80 views
1

有沒有一種方法來設置一個Richtextbox,它不撤消堆棧中的文本撤消單位。默認行爲是,當您編寫文本時(全部在同一段落中),您鍵入的整個文本都屬於同一個撤消單位。我想要的是每個單詞都有一個撤消單位。 我試過了,但沒有奏效。自定義撤消重複的RichTextBox

- >鍵入文本之前:

myRichTextBox.BeginChange(); 

- >您剛纔輸入的空間:

myRichTextBox.EndChange(); 
myRichTextBox.LockCurrentUndoUnit(); 
myRichTextBox.BeginChange(); 

但是當我運行的應用程序,之後我輸入一些文字,撤消命令(ctrl + z)的行爲仍然相同。

回答

1

覆蓋OnPreviewKeyDown(KeyEventArgs E)在RichTextBox的方法,然後添加某事像這樣:

if (e.Key==Key.Space) 
{ 
    BeginChange(); 
    //set logical direction to be backward 
    CaretPosition = CaretPosition.GetPositionAtOffset(0, LogicalDirection.Backward); 
    CaretPosition.InsertTextInRun(" "); // Insert space 
    CaretPosition = CaretPosition.GetNextInsertionPosition(LogicalDirection.Forward); 
    e.Handled = true; 
    EndChange(); 
} 

您可以插入其他字符,如 「{」, 「}」,...到有相同的行爲。

這適用於我。