실행 취소 스택을 만들어야합니다. 실행 취소 할 충분한 정보가있는 데이터 테이블의 각 편집 작업 후에이 스택을 채 웁니다. 그런 다음 역순으로 스택에서 작업을 수행하는 메커니즘을 제공하십시오.
라고 말하면 테이블에 int c1과 varchar c2라는 두 개의 열이 있습니다. 힌트를주기 위해 몇 가지 샘플 수업이 있습니다.
struct ColData{
int c1;
string c2;
};
class Action {
public abstract bool Undo(){}
public abstract bool Redo(){}
}
class AddAction : Action{
ColData data;
public AddAction(ColData d){data = d;}
public override bool Undo(){
//remove the row
//identify it with info from local field 'data'
}
public override bool Redo(){
//add the row with info from local field 'data'
}
}
//other actions like Delete, Update
기타 모든 작업에 대해서도 마찬가지입니다. 조치를 편집하려면 이전 값과 새 값의 두 세트의 컬럼 값이 필요할 수 있으므로 변경 사항을 앞뒤로 반복 할 수 있습니다. 변경 사항이있을 때마다 해당 조치를 조치 스택으로 푸시합니다. 실행 취소하라는 메시지가 표시되면 실행 취소 스택에서 팝 아웃하고 실행 취소 메서드를 호출 한 다음 다시 실행 스택으로 밀어 넣습니다. 일부 작업을 다시 실행하라는 메시지가 표시되면 다시 실행 스택에서 튀어 나오고 다시 실행을 호출하고 스택 실행을 취소 할 때까지 누릅니다. 다른 새로운 작업이있을 때 스택을 다시 실행하고 새 작업을 실행 취소 스택으로 푸시해야합니다.
안녕하세요, 저는 초급자이기 때문에 다른 곳으로 전화를 걸 수 없습니다. – ush
내가 아는 한 다른 방법은 없습니다. DataTables는 많은 정보를 저장하지 않습니다. 진지한 프로그래밍을해야 할 것입니다. 여기에서 시작하십시오 : http://msdn.microsoft.com/en-us/library/w9y9a401%28VS.80%29.aspx –
정말 고마워요. – ush