편집기 등의 디자이너는 일반적으로 코드 요소를 수정할 때 사용자가 최근 변경 내용을 되돌릴 수 있도록 실행 취소 작업을 지원해야 합니다.
Visual Studio에서 구현된 대부분의 디자이너는 환경에서 자동으로 "실행 취소" 지원을 제공합니다.
실행 취소 기능에 대한 지원을 제공해야 하는 디자이너 구현:
추상 기본 클래스를 구현하여 실행 취소 관리 제공 UndoEngine
IDesignerSerializationService 및 IComponentChangeService 클래스를 구현해 지속성 및 CodeDOM 지원을 제공합니다.
.NET Framework를 이용한 디자이너 작성 방법에 대해서는 디자인 타임 지원 확장에서 자세한 내용을 참조하세요.
Visual Studio SDK는 다음을 통해 기본 실행 취소 인프라를 제공합니다.
OleUndoEngine 및 OleUndoEngine.UndoUnit 클래스를 통해 실행 취소 관리 구현 제공.
기본 CodeDomComponentSerializationService 및 IComponentChangeService 구현을 통해 지속성 및 CodeDOM 지원을 제공.
자동으로 실행 취소 지원 받기
Visual Studio에서 만든 모든 디자이너는 디자이너와 관련된 다음의 경우, 자동 및 전체 실행 취소 지원을 제공합니다.
디자이너가 사용자 인터페이스에 Control 기반 클래스를 사용하는 경우.
디자이너가 코드 생성 및 지속성을 위해 표준 CodeDOM 기반 코드 생성 및 구문 분석 시스템을 사용하는 경우.
Visual Studio CodeDOM 지원 작업에 대한 자세한 내용은 동적 소스 코드 생성 및 컴파일을 참조하세요.
명시적 디자이너 실행 취소 지원을 사용하는 경우
디자이너는 Control에서 제공된 인터페이스가 아닌 뷰 어댑터라고 하는 그래픽 사용자 인터페이스를 사용하는 경우 자체 실행 취소 관리를 제공해야 합니다.
.NET Framework 기반 그래픽 인터페이스가 아닌 웹 기반 그래픽 디자인 인터페이스를 사용하여 제품을 만드는 경우가 일례가 될 수 있습니다.
이러한 경우에는 ProvideViewAdapterAttribute를 사용해 이 보기 어댑터를 Visual Studio에 등록하고 명시적 실행 취소 관리를 제공해야 할 수도 있습니다.
디자이너는 System.CodeDom 네임스페이스에 제공된 Visual Studio 코드 생성 모델을 사용하지 않는 경우 CodeDOM 및 지속성 지원을 제공해야 합니다.
디자이너의 실행 취소 지원 기능
환경 SDK는 사용자 인터페이스나 표준 CodeDOM 및 지속성 모델에 Control 기반 클래스를 사용하지 않은 디자이너가 사용할 수 있는 실행 취소 지원 기능에 필요한 인터페이스 기본 구현을 제공합니다.
OleUndoEngine 클래스는 실행 취소 직업 관리를 위해 IOleUndoManager 클래스 구현을 사용하는 .NET Framework UndoEngine 클래스에서 파생됩니다.
Visual Studio는 디자이너 실행 취소에 다음 기능을 제공합니다.
여러 디자이너에서 연결된 실행 취소 기능
디자이너 내의 자식 단위는 OleUndoEngine.UndoUnit에서 IOleUndoUnit 및 IOleParentUndoUnit을 구현하여 부모와 상호작용할 수 있습니다.
환경 SDK는 다음을 제공함으로써 CodeDOM 및 지속성 지원을 제공합니다.
IDesignerSerializationService 구현으로서의 CodeDomComponentSerializationService
Visual Studio 디자인 호스트에서 제공하는 IComponentChangeService.
환경 SDK 기능을 사용하여 실행 취소 지원 제공
실행 취소 지원을 얻으려면 디자이너를 구현하는 개체가 유효한 IServiceProvider 구현을 통해 OleUndoEngine 클래스를 인스턴스화하고 그 인스턴스를 초기화해야 합니다. 이 IServiceProvider 클래스는 다음 서비스를 제공해야 합니다.
-
Visual Studio CodeDOM 직렬화를 사용하는 디자이너는 CodeDomComponentSerializationService를 IDesignerSerializationService 구현으로 사용하는 Visual Studio SDK와 함께 사용하도록 선택할 수 있습니다.
이러한 경우, OleUndoEngine 생성자에게 제공된 IServiceProvider 클래스는 이 개체를 IDesignerSerializationService 클래스의 구현으로 반환해야 합니다.
-
Visual Studio 디자인 호스트에서 제공하는 기본값 DesignSurface를 사용하는 디자이너는 IComponentChangeService 클래스의 기본 구현을 보장합니다.
다음의 경우 OleUndoEngine 기반 실행 취소 메커니즘을 구현하는 디자이너는 자동으로 변경 내용을 추적합니다.
TypeDescriptor 개체를 통해 속성이 변화할 경우.
IComponentChangeService 이벤트는 실행 취소가 가능한 변경이 커밋될 때 수동으로 생성됩니다.
디자이너 상의 수정이 DesignerTransaction 컨텍스트 내에서 이루어졌습니다.
디자이너는 UndoEngine.UndoUnit을 구현하거나 UndoEngine.UndoUnit에서 파생되는 Visual Studio 관련 구현인 OleUndoEngine.UndoUnit으로 인해 제공되는 표준 실행 취소 단위를 이용해 명시적으로 실행 취소 단위를 만들도록 선택하며 IOleUndoUnit과 IOleParentUndoUnit의 구현을 제공합니다.