Предоставление поддержки отмены конструкторам

Конструкторы, такие как редакторы, обычно должны поддерживать операции отмены, чтобы пользователи могли отменить последние изменения при изменении элемента кода.

Большинство конструкторов, реализованных в Visual Studio, поддерживают "отмену" автоматически, предоставляемые средой.

Реализации конструктора, необходимые для поддержки функции отмены:

  • Предоставление управления отменой путем реализации абстрактного базового класса UndoEngine

  • Предоставьте поддержку сохраняемости и CodeDOM, реализуя IDesignerSerializationService и IComponentChangeService классы.

Дополнительные сведения о написании конструкторов с помощью платформа .NET Framework см. в разделе "Расширение поддержки во время разработки".

Пакет SDK Для Visual Studio предоставляет инфраструктуру отмены по умолчанию:

Автоматическое получение поддержки отмены

Любой конструктор, созданный в Visual Studio, имеет автоматическую и полную поддержку отмены, если конструктор:

  • Использует основанный Control класс для пользовательского интерфейса.

  • Использует стандартную систему создания кода на основе CodeDOM и синтаксического анализа для создания кода и сохраняемости.

    Дополнительные сведения о работе с поддержкой Visual Studio CodeDOM см. в разделе Динамическое создание и компиляция исходного кода.

Когда следует использовать явную поддержку конструктора отмены

Конструкторы должны предоставить собственное управление отменой, если они используют графический пользовательский интерфейс, называемый адаптером представления, кроме предоставленного пользователем Control.

Примером этого может быть создание продукта с графическим интерфейсом веб-дизайна, а не графическим интерфейсом на основе платформа .NET Framework.

В таких случаях необходимо зарегистрировать этот адаптер представления в Visual Studio с помощью ProvideViewAdapterAttributeи предоставить явное управление отменой.

Конструкторы должны предоставлять поддержку CodeDOM и сохраняемости, если они не используют модель создания кода Visual Studio, предоставляемую System.CodeDom в пространстве имен.

Отмена поддержки функций конструктора

Пакет SDK среды предоставляет реализации интерфейсов по умолчанию, необходимых для предоставления поддержки отмены, которая может использоваться конструкторами, не использующими Control классы на основе для пользовательских интерфейсов или стандартной модели codeDOM и сохраняемости.

Класс OleUndoEngine является производным от класса платформа .NET Framework UndoEngine с помощью реализации класса для управления операциями IOleUndoManager отмены.

Visual Studio предоставляет следующую функцию для отмены конструктора:

  • Связанные функции отмены между несколькими конструкторами.

  • Дочерние единицы в конструкторе могут взаимодействовать со своими родителями, реализуя и IOleParentUndoUnit выполняя IOleUndoUnitOleUndoEngine.UndoUnitих.

Пакет SDK для среды обеспечивает поддержку CodeDOM и сохраняемости, предоставляя следующие возможности:

Использование функций пакета SDK для среды для предоставления поддержки отмены

Чтобы получить поддержку отмены, объект, реализующий конструктор, должен создать экземпляр и инициализировать экземпляр OleUndoEngine класса с допустимой IServiceProvider реализацией. Этот IServiceProvider класс должен предоставлять следующие службы:

Разработчики, реализующие OleUndoEngine механизм отмены на основе, автоматически отслеживают изменения, если:

  • Изменения свойств вносятся через TypeDescriptor объект.

  • IComponentChangeService события создаются вручную при фиксации отмены изменений.

  • Изменение конструктора было создано в контексте DesignerTransaction.

  • Конструктор выбирает явное создание единиц отмены с помощью стандартной единицы отмены, предоставленной UndoEngine.UndoUnit реализацией или реализацией OleUndoEngine.UndoUnitvisual Studio, которая является производным от UndoEngine.UndoUnit , а также обеспечивает реализацию обоих IOleUndoUnit и IOleParentUndoUnit.