To implement Undo, the simplest way is to use a MemoryStream object in your WaveDisplayForm (MDI Child) and simply serialize the Wave (which should be marked as [Serializable] to the stream and hold on to the stream object. private MemoryStream _undoStream = new MemoryStream(); private bool _canUndo = false; public void SaveForUndo() { BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(_undoStream, wave); _undoStream.Flush(); // This rewinds the stream so that when it is used for deserialization, it's ready to use, // otherwise, the deserialization will start deserializing from the end of the stream and would fail. _undoStream.Position = 0; _canUndo = true; } public void Undo() { BinaryFormatter bf = new BinaryFormatter(); ...
Didn't have big problems yet (probably config file will need more digging), going slow because too much information from course and usualy takes time to find right code even I'm already did it in past... need a new fast modern memory in my head... clean, without mess :).
ReplyDeleteStill going forward, do not see the end.......