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

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

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

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

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

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

дополнительные сведения о создании конструкторов с помощью платформа .NET Framework см. в статье расширение поддержки Design-Time.

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 предоставляет следующие возможности для отмены конструктора.

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

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

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

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

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

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

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

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

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

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

См. также