如何在winform中撤消更改并检索以前的表单状态?

时间:2016-03-26 14:53:43

标签: c# winforms undo

我正在编写一个游戏,我有时需要撤消一些步骤,有没有直接的方法来做到这一点? 我尝试将控件放在数据结构,堆栈和列表中等等,但在我的游戏中事情太复杂了。 感谢

1 个答案:

答案 0 :(得分:0)

不,没有内置的方法可以做到这一点;你必须自己编码。我建议创建一个类FormState,它有成员表示要保存状态的表单上每个控件的值。然后添加方法以将表单值复制到表单或从表单复制表单值。最后,在程序中创建堆栈数据结构。每当用户更改表单上的内容时,创建FormState的新实例,调用方法将当前表单状态转移到FormState对象,并将其推送到堆栈上。如果用户按下undo,则从堆栈中弹出最后一个状态并调用该方法从FormState类恢复表单控件。这真的就是它。