Artigo: 325618 - Última revisão: sexta-feira, 23 de Fevereiro de 2007 - Revisão: 3.3

PROBLEMA: Nome Collision in a classe de wrapper de ActiveX

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Reduzir tudo

Sintomas

Quando utiliza uma propriedade ou um método de uma classe de wrapper do ActiveX para um ActiveX controlo, a propriedade ou método não funciona como previsto. Consulte também método e nomes de propriedade que são prefixo CTL e Consulte nomes de eventos que são acrescentados com eventos na classe de wrapper ActiveX.

Causa

Isto ocorre devido a uma colisão. Os colisões de nomes ocorrem quando a classe de wrapper do ActiveX que é gerada pela ferramenta de importação de controlo ActiveX do Windows formulários (aximp.exe) inclui uma propriedade, método ou evento que tem o mesmo nome que um controlo ActiveX. Por exemplo, o Actualizar método dos conflitos de controlo ActiveX com o método de actualização que adiciona a classe de wrapper do ActiveX para o controlo. Para gerir este tipo de conflito, mudanças de classe de wrapper ActiveX nome método CtlRefresh controlo de ActiveX. Se tem de chamar o método de actualização do controlo ActiveX, ligue CtlRefresh .

Resolução

Contactar a propriedade adequada, método ou evento que é explicado na secção "Mais informação" deste artigo.

Ponto Da Situação

Este comportamento ocorre por predefinição.

Mais Informação

Por formulários do Windows trabalhar com um controlo ActiveX, propriedades adicionais, métodos e eventos são adicionados ao controlo. Por exemplo, propriedades tais como tamanho e visível transformam-se propriedades expandidas do controlo. Estas propriedades adicionais, métodos e eventos, juntamente com as propriedades públicas, métodos e eventos do controlo ActiveX, formam a nova classe de wrapper. Quando escrever código contra o controlo, está a escrever o código de classe wrapper. Os delegados de classe de wrapper para o controlo ActiveX. Se definir uma propriedade pública que está disponível no controlo ActiveX, a classe de wrapper passa a definição da propriedade através de para o controlo. Se definir uma propriedade alargada não for encontrada no controlo ActiveX, a classe de wrapper executa a operação no controlo, tais como alternar visibilidade ou alterar o respectivo tamanho.

Para obter mais informações sobre estas propriedades alargadas, métodos e eventos, visite o seguinte Web site da Microsoft:
AxHost Class Members (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformsaxhostmemberstopic.asp)
Nota : A classe de wrapper mencionada anteriormente deriva da classe AxHost .

Evento nome Collision

Se um nome de evento entrar em conflito com outro nome de evento de classe de propriedade ou base, a classe de wrapper muda o evento acrescentando palavra eventos até ao fim do nome do evento. Um exemplo de uma colisão de evento é o controlo Microsoft WinSock . Se colocar um controlo WinSock num formulário Windows e visualizar os eventos, verá que os eventos de Fechar e ligar tem sido alterados para CloseEvent e ConnectEvent , respectivamente.

Passos para reproduzir o comportamento

  1. Crie um novo projecto de aplicação do Visual C# .NET Windows. Por predefinição, é criado Form1.cs.
  2. No menu Ferramentas , clique em Personalizar a caixa de ferramentas .
  3. Na caixa de diálogo Personalizar a caixa de ferramentas , clique no separador COM componentes , clique para seleccionar controlo do Microsoft Web Browser (shdocvw.dll) e, em seguida, clique em OK .
  4. Adicione o controlo Explorer ao Form1 . Uma variável privada axWebBrowser1 do tipo AxSHDocVw.AxWebBrowser é adicionado à classe Form1 .
  5. O controlo do Browser utilizar axWebBrowser1 do programa. Quando escrever axWebBrowser1 e, em seguida, escreva um ponto, IntelliSense apresenta todas as propriedades, métodos e eventos para a classe de wrapper do Web Browser . Ver um método de actualização e um método CtlRefresh . Se pretender chamar o método de actualização do controlo ActiveX, tem de chamar CtlRefresh .
Nota : É também verá outras propriedades com nomes em conflito de prefixo com CTL para o controlo de Browser .

A informação contida neste artigo aplica-se a:
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.1
Palavras-chave: 
kbmt kbprb KB325618 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 325618  (http://support.microsoft.com/kb/325618/en-us/ )