ID do artigo: 325618 - Última revisão: sexta-feira, 23 de fevereiro de 2007 - Revisão: 3.3

PROBLEMA: Colisão de nome na classe de wrapper do 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 | Recolher tudo

Sintomas

Quando você usar uma propriedade ou um método de uma classe de wrapper do ActiveX para um ActiveX controle, a propriedade ou método não funciona conforme o esperado. Você também consulte o método e nomes de propriedades que são prefixados com CTL e você consulte nomes de eventos que são acrescentados com eventos na classe de wrapper do ActiveX.

Causa

Isso ocorre devido a uma colisão de nome. Conflitos de nome ocorrem quando a classe de wrapper do ActiveX que é gerada pela ferramenta Importador de controle ActiveX do Windows Forms (aximp.exe) inclui uma propriedade, método ou evento que tem o mesmo nome como um controle ActiveX. Por exemplo, o método Refresh de conflitos de controle ActiveX com o método Refresh que adiciona a classe de wrapper do ActiveX para o controle. Para gerenciar esse tipo de conflito, as renomeações de classe de wrapper do ActiveX do ActiveX controle método para CtlRefresh . Se você deve chamar o método Refresh do controle ActiveX, chame CtlRefresh .

Resolução

Chamar a propriedade apropriada, método ou evento que é explicado na seção "Mais informações" deste artigo.

Situação

Esse comportamento é por design.

Mais Informações

Para o Windows Forms trabalhar com um controle ActiveX, propriedades adicionais, métodos e eventos são adicionados ao controle. Por exemplo, propriedades, como tamanho e visível se tornam propriedades estendidas de seu controle. Essas propriedades adicionais, métodos e eventos, juntamente com as propriedades públicas, métodos e eventos do controle ActiveX, a nova classe de invólucro de formulário. Quando você escreve código contra o controle, você está escrevendo o código em relação a classe de wrapper. Os representantes de classe de wrapper para o controle ActiveX. Se você definir uma propriedade pública que está disponível no controle ActiveX, a classe de wrapper passa a configuração da propriedade através de para o controle. Se você definir uma propriedade estendida não for encontrada no controle ActiveX, a classe de wrapper executa a operação no controle, como alternar a visibilidade ou alterar seu tamanho.

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

Colisão de nome de evento

Se um nome de evento entrar em conflito com outro nome de evento de classe de base ou propriedade, a classe de wrapper renomeia o evento acrescentando a palavra eventos ao final do nome do evento. Um exemplo de uma colisão de nome de evento é o controle Microsoft WinSock . Se você inserir um controle WinSock em um Windows form e exibir seus eventos, você verá que os eventos Fechar e conectar-se tem sido renomeados para CloseEvent e ConnectEvent , respectivamente.

Passos para reproduzir o problema

  1. Crie um novo projeto do Visual translation from VPE for Csharp .NET Windows Application. Por padrão, Form1.cs é criado.
  2. No menu Ferramentas , clique em Customize Toolbox .
  3. Na caixa de diálogo Personalizar caixa de ferramentas , clique na guia Componentes COM , clique para selecionar o controle Microsoft Web Browser (shdocvw.dll) e, em seguida, clique em OK .
  4. Adicione o controle Explorer ao Form1 . Uma variável privada axWebBrowser1 do tipo AxSHDocVw.AxWebBrowser é adicionado à classe Form1 .
  5. Programe o controle de Navegador da Web usando axWebBrowser1 . Quando você digite axWebBrowser1 e, em seguida, digite um ponto, o IntelliSense exibe todas as propriedades, métodos e eventos para a classe de wrapper do Navegador . Você vê um método de atualização e um método CtlRefresh . Se você deseja chamar o método Refresh do controle ActiveX, você deve chamar CtlRefresh .
Observação : você também verá outras propriedades com nomes conflitantes prefixados com CTL para o controle de Navegador da Web .

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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes 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/ )