我用C#写了一段二次开发CAD的代码,我先创建了一个标注,然后再创建第二个、第三个标注,但当我撤销的时候,会将所有标注都删除。我想逐步撤销,该怎么做
时间: 2024-02-24 19:58:50 浏览: 21
你可以使用 CAD 中的 UndoSubcommand 方法来实现逐步撤销。每次创建标注后,你可以将该操作保存到一个 UndoRecord 对象中,然后将该对象添加到 UndoManager 中。当你需要撤销操作时,依次从 UndoManager 中获取 UndoRecord 对象,并调用 UndoSubcommand 方法。这样就可以逐步撤销,而不是一次性将所有标注都删除。
以下是示例代码:
```
// 创建 UndoManager 对象
UndoManager undoManager = new UndoManager();
// 创建标注
Entity entity1 = new Entity();
// ...
// 将标注操作保存到 UndoRecord 对象中
UndoRecord undoRecord1 = new UndoRecord();
undoRecord1.AddEntity(entity1);
// 将 UndoRecord 对象添加到 UndoManager 中
undoManager.AddUndoRecord(undoRecord1);
// 创建第二个标注
Entity entity2 = new Entity();
// ...
// 将标注操作保存到 UndoRecord 对象中
UndoRecord undoRecord2 = new UndoRecord();
undoRecord2.AddEntity(entity2);
// 将 UndoRecord 对象添加到 UndoManager 中
undoManager.AddUndoRecord(undoRecord2);
// 创建第三个标注
Entity entity3 = new Entity();
// ...
// 将标注操作保存到 UndoRecord 对象中
UndoRecord undoRecord3 = new UndoRecord();
undoRecord3.AddEntity(entity3);
// 将 UndoRecord 对象添加到 UndoManager 中
undoManager.AddUndoRecord(undoRecord3);
// 撤销操作
while (undoManager.CanUndo())
{
undoManager.UndoSubcommand();
}
```