2012-11-22 42 views
7

Dường như có phương thức ClearUndo() này trong RichTextBox trong Windows Forms (xem system.windows.forms.textboxbase.).Làm cách nào tôi có thể xóa một hành động khỏi hoàn tác ngăn xếp điều khiển RichTextBox?

Tôi cần một cái gì đó tương tự trong RichTextBox Control. Điều này là do (như được đề cập ở đây: Preventing a RichTextBox operation from being added to the control's Undo stack) mọi thay đổi được thêm vào ngăn xếp hoàn tác của RichTextBox.

Tôi muốn ghi đè OnTextChanged sự kiện và xóa một số thay đổi này khỏi ngăn xếp Uno. Làm thế nào tôi có thể làm điều đó?

cảm ơn.

Trả lời

11

Bạn có thể bắt chước ClearUndo() cho WPF RichTextBox kiểm soát với đoạn mã sau:

richTextBox.IsUndoEnabled = false; 
richTextBox.IsUndoEnabled = true; 

Nhưng không có cách nào bạn có thể kiểm soát bất cứ hành động đặc biệt trong danh sách Undo.

Nếu bạn vẫn muốn triển khai cơ chế Undo/Redo của riêng mình, cách dễ nhất và đơn giản nhất là lưu trữ trong một mảng toàn bộ văn bản của điều khiển trên mỗi thay đổi văn bản quan trọng. Nhưng tôi sẽ tư vấn cho nó chỉ khi bạn không có kế hoạch chỉnh sửa văn bản lớn với sự kiểm soát.