我有一个文本框,我想为其实现撤消/重做功能。我 have read它可能已经有一些轻微的撤消功能,但它是错误的?无论如何,我想同时实现撤消和重做功能,只是为了了解您将如何继续这样做。
我已经阅读了 Memento Pattern并在 Generic Undo/Redo 上看了一些CodeProject 上的示例。这种模式很有意义。我似乎无法全神贯注于如何实现它。以及如何有效地处理 TextBox
的内容。
当然,当 TextChanges
时,我可以只存储 textbox.Text
,但这会很快占用大量内存,尤其是 TextBox
包含很多文本。
所以无论如何,我正在寻找一些关于如何以良好、清晰和有效的方式实现此功能的建议。一般而言,尤其是对于 TextBox c",)
最佳答案
.NET System.ComponentModel
命名空间带有一个 IEditableObject
接口(interface),您也可以使用 INotifyPropertyChanging
和 INotifyPropertyChanged
。 MVC 模式还可以让您的界面通过事件响应模型中的更改,从而更新或恢复文本框的值。
实际上是 Memento 模式。
你看过这些吗? Here是一个方法。
一个简单快捷的版本是存储文本框 OnTextChanged
的状态。每次撤消都会返回数组中的最后一个事件。 C# 堆栈类型在这里会很方便。您也可以在离开界面后或在 Apply
之后清除状态。
关于c# - 如何为 TextBox 实现良好且高效的撤消/重做功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/597792/