Compartilhar via


Considerações sobre quando hospedar um controle ActiveX em um Windows Form

Embora o Windows Forms tenha sido otimizada para hospedar controles dos Windows Forms, você ainda poderá usar controles ActiveX. Lembre-se das seguintes considerações ao planejar um aplicativo que usa os controles ActiveX:

  • Segurança O Common Language Runtime foi aprimorado em relação à segurança de acesso do código. Aplicativos que contém formulários dos Windows Forms podem ser executados em um ambiente totalmente confiável sem problemas e em um ambiente de confiança parcial com a maioria das funcionalidades acessíveis. Controles dos Windows Forms podem ser hospedados em um navegador sem complicações. No entanto, controles ActiveX nos Windows Forms não podem aproveitar essas melhorias de segurança. A execução de um controle ActiveX requer permissão de código não gerenciado, que é definida com a SecurityPermissionAttribute.UnmanagedCode propriedade. Para obter mais informações sobre segurança e permissão de código não gerenciado, consulte SecurityPermissionAttribute.

  • Custo total de propriedade Controles ActiveX adicionados a um Windows Form são implantados com esse Windows Form integralmente, o que pode aumentar significativamente o tamanho do arquivo criado. Além disso, usar controles ActiveX nos Windows Forms requer a gravação no Registro. Isso é mais invasivo no computador do usuário que os controles dos Windows Forms, que não exigem isso.

    Observação

    Trabalhar com um controle ActiveX requer o uso de um wrapper de interoperabilidade COM. Para obter mais informações, consulte Interoperabilidade COM em Visual Basic e Visual C#.

    Observação

    Se o nome de um membro do controle ActiveX corresponder a um nome definido no .NET Framework, o Importador de Controle ActiveX prefixará o nome do membro com Ctl quando criar a AxHost classe derivada. Por exemplo, se o controle ActiveX tiver um membro chamado Layout, ele será renomeado CtlLayout na classe derivada de AxHost porque o evento Layout é definido no .NET Framework.

Confira também