2016-04-30 106 views
0

Dears,c#命令模式设计问题

我有PropertyGrid和UI(PopupMenu等)可以更改其成员'(对象)属性的对象模型。在这种情况下,我正在寻找支持UndoRedo的命令模式和感兴趣的设计。据我所知,通过PropertyGrid更改任何属性应该在UndoRedo堆栈中注册,但是,撤消此操作等同于将该属性更改为旧值 - 以及无限循环?你知道这种情况下的最佳做法吗?

谢谢。

+0

我想知道你是否可以重新解释你的问题,因为我不清楚你到底在找什么。您是否想了解如何实现撤消/重做实施的命令模式?如果你已经有了一些实现,我希望看到它,这样我可以更好地理解你在实现它的过程中有多远。 – MSB

回答

1

我想撤销行动不一定要算作一个改变。

您有您的更改的集合。当您进行更改时,请在此集合中添加项目。如果你进行撤销,只需将当前状态与[i-1]状态交换即可。如果重做,则用[i + 1]状态交换当前状态。如果你已经做了一些撤销,然后做出改变,你开始从那里写入并重写所有可能的重做。