DetailPage-MSS-KB

Base de Dados de Conhecimento

ID do artigo: 257495 - Última revisão: terça-feira, 7 de agosto de 2007 - Revisão: 2.2

 

Nesta página

Sintomas

Quando você clica em um item em um controle ListView , o evento ItemClick para o controle ListView é executado duas vezes.

Causa

Esse problema é causado pela maneira como no qual rótulo manual edição é implementado. Quando você seleciona um item, o evento ItemClick é acionado normalmente, mas, além disso, o controle ListView permite um timer interno cujo atraso é igual a que a duração de um clique duplo. Quando esse atraso expirar, evento do timer é acionado e o código para este timer determina se o controle ListView deve inserir o rótulo do modo de edição. Se edição do rótulo é interrompida, que é sempre o caso para edição de rótulo manual, a seleção é desmarcada e re-selected. Este re-selection aciona o segundo ItemClick .

Você pode causar esse problema ocorrer em uma destas duas maneiras. A primeira é definir a a propriedade LabelEdit do ListView para lvwManual (como no código de exemplo na seção "Mais informações" deste artigo). Uma maneira alternativa de reprodução desse comportamento é definir a propriedade LabelEdit para lvwAutomatic e definir Cancelar igual a True no evento BeforeLabelEdit do ListView .

Resolução

Para resolver esse problema, instale o service pack mais recente para o Visual Studio 6.0.

Se instalar o service pack não for uma opção ou se você estiver executando uma versão anterior à versão 6.0 do Visual Basic, defina a propriedade LabelEdit do controle ListView para lvwAutomatic e não defina Cancelar igual a True no evento BeforeLabelEdit de ListView .

Situação

A Microsoft confirmou que esse é um problema nos produtos da Microsoft listados no começo deste artigo. Esse bug foi corrigido no service pack mais recente para Visual Studio 6.0.

Para obter informações adicionais sobre service packs do Visual Studio, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
194022  (http://support.microsoft.com/kb/194022/EN-US/ ) INFO: Visual Studio 6.0 Service Packs, What, WHERE, por que

194295  (http://support.microsoft.com/kb/194295/EN-US/ ) COMO: Saber que o Visual Studio Service Pack está instalado
Para baixar o service pack mais recente do Visual Studio, visite o seguinte site da Microsoft:
http://msdn2.microsoft.com/en-us/vstudio/Aa718353.aspx (http://msdn2.microsoft.com/en-us/vstudio/Aa718353.aspx)

Mais Informações

Etapas para reproduzir o problema

  1. Crie um novo projeto Standard EXE no Visual Basic. O Form1 é criado por padrão.
  2. A partir do menu Project , escolha componentes , selecione Controles comuns do Microsoft Windows e, em seguida, clique em OK .
  3. Adicione um controle ListView ao Form1.
  4. Cole o código seguinte na janela de código do Form1:
    Option Explicit
    
    Private Sub Form_Load()
        Dim Col As ColumnHeader
        Dim itmAdd As ListItem
        
        ' Set the report's view
        ListView1.View = lvwReport
        
        ' Add a column to the listview
        Set Col = ListView1.ColumnHeaders.Add(Text:="Items")
        
        ' Set the label editing to manual
        ListView1.LabelEdit = lvwManual
        
        ' Add some sample data
        Set itmAdd = ListView1.ListItems.Add(Text:="one")
        Set itmAdd = ListView1.ListItems.Add(Text:="two")
    End Sub
    
    Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
        Debug.Print ListView1.SelectedItem.Text
    End Sub
    					
  5. Execute a amostra.
  6. Clique em item "dois" no controle ListView . Isso deve resultar no texto do item "dois" sendo exibido na janela imediata/depuração.
  7. Aguarde um momento e clique em item "dois" novamente. Isso resulta no texto do item "dois" sendo exibidos mais duas vezes na janela de depuração/imediata.

A informação contida neste artigo aplica-se a:
  • Microsoft Visual Basic 6.0 Learning Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Basic Control Creation Edition
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
Palavras-chave: 
kbmt kbactivexevents kbbug kbctrl kbfix kblistview kbvs600sp4fix kbvs600sp5fix KB257495 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: 257495  (http://support.microsoft.com/kb/257495/en-us/ )
Compartilhar
Opções de suporte adicionais
Fóruns de Suporte do Microsoft Community
Contate-nos diretamente
Localize um parceiro certificado da Microsoft
Microsoft Store