Compartilhar via


Fornecer suporte de desfazer aos projetistas

Os designers, como os editores, geralmente precisam oferecer suporte a operações de desfazer para que os usuários possam reverter suas alterações recentes ao modificar um elemento de código.

A maioria dos designers implementados no Visual Studio tem suporte a "desfazer" fornecido automaticamente pelo ambiente.

Implementações de designer que precisam fornecer suporte para o recurso de desfazer:

Para obter mais informações sobre como escrever designers usando o .NET Framework, consulte Estender o suporte ao tempo de design.

O SDK do Visual Studio fornece uma infraestrutura de desfazer padrão por:

Obter suporte para desfazer automaticamente

Qualquer designer criado no Visual Studio tem suporte a desfazer automático e completo se, o designer:

  • Faz uso de uma Control classe baseada para sua interface de usuário.

  • Emprega o sistema padrão de geração e análise de código baseado em CodeDOM para geração e persistência de código.

    Para obter mais informações sobre como trabalhar com o suporte ao Visual Studio CodeDOM, consulte Geração e compilação de código-fonte dinâmico.

Quando usar o suporte a desfazer do Designer Explícito

Os designers devem fornecer seu próprio gerenciamento de desfazer se usarem uma interface gráfica do usuário, conhecida como um adaptador de exibição, diferente da fornecida pelo Control.

Um exemplo disso pode ser a criação de um produto com uma interface de design gráfico baseada na Web em vez de uma interface gráfica baseada no .NET Framework.

Nesses casos, seria necessário registrar esse adaptador de exibição com o Visual Studio usando ProvideViewAdapterAttributeo , e fornecer gerenciamento explícito de desfazer.

Os designers precisam fornecer suporte a CodeDOM e persistência se não usarem o modelo de geração de código do Visual Studio fornecido no espaço de System.CodeDom nome.

Desfazer recursos de suporte do Designer

O SDK do Ambiente fornece implementações padrão de interfaces necessárias para fornecer suporte a desfazer que podem ser usadas por designers que não usam Control classes baseadas para suas interfaces de usuário ou o CodeDOM padrão e o modelo de persistência.

A OleUndoEngine classe deriva da classe .NET Framework UndoEngine usando uma implementação da classe para gerenciar operações de IOleUndoManager desfazer.

O Visual Studio fornece o seguinte recurso para o designer desfazer:

O SDK do Ambiente fornece suporte a CodeDOM e persistência fornecendo:

Usar os recursos do SDK do ambiente para fornecer suporte a desfazer

Para obter suporte para desfazer, um objeto que implementa um designer deve instanciar e inicializar uma instância da OleUndoEngine classe com uma implementação válida IServiceProvider . Essa IServiceProvider classe deve fornecer os seguintes serviços:

Os designers que implementam um mecanismo de OleUndoEngine desfazer baseado rastreiam automaticamente as alterações se: