CORRECÇÃO: ListView executa o evento ItemClick duas vezes com LabelEdit definido como manual

Traduções deste artigo Traduções deste artigo
ID do artigo: 257495 - Exibir os produtos aos quais esse artigo se aplica.
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Expandir tudo | Recolher tudo

Neste artigo

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:
194022INFO: Visual Studio 6.0 Service Packs, What, WHERE, por que

194295COMO: 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

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.

Propriedades

ID do artigo: 257495 - Última revisão: domingo, 23 de fevereiro de 2014 - Revisão: 2.2
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: 
kbnosurvey kbarchive kbmt kbactivexevents kbbug kbctrl kbfix kblistview kbvs600sp4fix kbvs600sp5fix KB257495 KbMtpt
Traduçã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

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com