Fornecendo suporte à função Desfazer para Designers
Designers, como editores, geralmente precisam oferecer suporte a operações de desfazer para que os usuários podem reverter suas alterações recentes ao modificar um elemento de código.
A maioria dos designers implementados em Visual Studio têm fornecido automaticamente pelo ambiente de suporte de desfazer.
Implementações de Designer que precisam para fornecer suporte para o recurso de desfazer:
Fornecer gerenciamento de desfazer, Implementando a classe base abstrataUndoEngine
Suporte de persistência Supply e CodeDOM, Implementando o IDesignerSerializationService e o IComponentChangeService classes.
Para obter mais informações sobre a escrita de designers usando o .NET Framework, consulte Estendendo o suporte para tempo de design.
O SDK do Visual Studio fornece uma infra-estrutura de desfazer padrão por:
Fornecendo implementações de gerenciamento por meio de desfazer o OleUndoEngine e UndoUnit classes.
Fornecendo suporte CodeDOM através do padrão e persistência CodeDomComponentSerializationService e IComponentChangeService implementações.
Como obter o suporte à função Desfazer automaticamente
Qualquer designer criado no Visual Studio tem suporte completo e automáticos de desfazer se, o designer:
Faz uso de um Control com base em classe para sua interface do usuário.
Emprega a geração de código padrão baseado no CodeDOM e o sistema de análise de persistência e geração de código.
Para obter mais informações sobre como trabalhar com o suporte do CodeDOM de Visual Studio, consulteGeração e compilação de código-fonte dinâmico
Quando usar o suporte à função desfazer de Designer explícita
Designers devem fornecer seu próprio gerenciamento desfazer se eles usarem uma interface gráfica do usuário, conhecida como um adaptador de exibição diferente daquele fornecido pelo Control.
Um exemplo disso pode estar criando um produto com uma interface de design gráfico baseada na web em vez de um .NET Framework com base em interface gráfica.
Em tais casos, é necessário registrar este adaptador de exibição com Visual Studio usando ProvideViewAdapterAttributee fornecer gerenciamento explícito de desfazer.
Designers precisam fornecer suportam de CodeDOM e persistência se eles usarem o Visual Studio fornecido no modelo de geração de código do System.CodeDom espaço de nomes.
Recursos de suporte do Designer de desfazer
O SDK do ambiente fornece implementações padrão dessas interfaces necessários para fornecer desfazer de suporte que pode ser usado pelos designers não usando Control com base em classes para suas interfaces de usuário ou o modelo padrão de CodeDOM e persistência.
O OleUndoEngine classe deriva o .NET FrameworkUndoEngine usando uma implementação de classe a IOleUndoManager classe para gerenciar operações de desfazer.
Visual Studio fornece o seguinte recurso para desfazer designer:
Funcionalidade de desfazer vinculadas através de vários designers.
Unidades secundárias dentro de um designer podem interagir com seus pais com a implementação de IOleUndoUnit e IOleParentUndoUnit na UndoUnit.
O SDK do ambiente oferece suportam a CodeDOM e persistência, fornecendo:
- CodeDomComponentSerializationServicecomo um implementações dasIDesignerSerializationService
A IComponentChangeService fornecida pelo Visual Studioo host de design.
Usando os recursos SDK do ambiente para o suporte de Desfazer fonte
Para obter suporte de desfazer, um objeto implementando um designer deve:
Instanciar e inicializar uma instância da OleUndoEngine classe com um válido IServiceProvider implementação.
Isso IServiceProvider classe deve fornecer os seguintes serviços:
-
Designers usando o Visual Studio a serialização de CodeDOM pode optar por usar CodeDomComponentSerializationService fornecido com o SDK do Visual Studio como sua implementação da IDesignerSerializationService.
Nesse caso, o IServiceProvider classe fornecida para o OleUndoEngine construtor deve retornar esse objeto como uma implementação da IDesignerSerializationService classe.
-
Os designers usando o padrão DesignSurface fornecida pelo Visual Studio host design garante ter uma implementação padrão da IComponentChangeService classe.
Designers de implementação de um OleUndoEngine o mecanismo de desfazer com base rastreará automaticamente as alterações se:
As alterações de propriedade são feitas por meio do TypeDescriptor objeto.
IComponentChangeServiceeventos são gerados manualmente quando uma alteração não podem ser desfeita é confirmada.
Modificação no designer foi criada dentro do contexto de um DesignerTransaction.
O designer opta por explicitamente criar unidades de desfazer usando a unidade para desfazer padrão fornecida por uma implementação de UndoUnit ou a implementação específica de Visual Studio UndoUnit, que é derivada de UndoUnit e também fornece uma implementação de ambos IOleUndoUnit e IOleParentUndoUnit.