DetailPage-MSS-KB

Base de Dados de Conhecimento

Artigo: 257495 - Última revisão: terça-feira, 7 de Agosto de 2007 - Revisão: 2.2

 

Nesta página

Sintomas

Quando clica num item num controlo ListView , o evento ItemClick para o controlo ListView é executado duas vezes.

Causa

Este problema é causado pela forma como a etiqueta manual edição é implementada. Quando selecciona um item, o evento ItemClick é desencadeado normalmente, mas, para além disso, o controlo ListView permite um temporizador incorporado cujo atraso é igual a que a duração de um duplo clique. Quando este atraso decorrido, evento o temporizador é accionado e o código para este temporizador determina se o controlo ListView deve introduzir o nome do modo de edição. Se editar etiqueta for interrompida, que é sempre o caso para edição manual de etiqueta e a selecção está desmarcada e re-selected. Este re-selection acciona o segundo ItemClick .

Pode causar este problema ocorrer de duas formas. A primeira consiste em definir a propriedade LabelEdit de ListView lvwManual (como no código de exemplo na secção "Mais informação" deste artigo). Uma forma alternativa de reproduzir este comportamento é definir a propriedade LabelEdit para lvwAutomatic e definir Cancelar igual a VERDADEIRO o evento BeforeLabelEdit de ListView .

Resolução

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

Se instalar o service pack não é uma opção ou estiver a executar uma versão anterior à versão 6.0 do Visual Basic, defina a propriedade LabelEdit do controlo ListView como lvwAutomatic e não defina Cancelar igual a VERDADEIRO no evento BeforeLabelEdit de ListView .

Ponto Da Situação

A Microsoft confirmou que este erro ocorre nos produtos da Microsoft listados no início deste artigo. Este erro foi corrigido no service pack mais recente para o Visual Studio 6.0.

Para obter informações adicionais sobre service packs do Visual Studio, clique números de artigo que se seguem para visualizar 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, que, em que, por que razão

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

Mais Informação

Passos para reproduzir o comportamento

  1. Crie um novo projecto EXE padrão no Visual Basic. É criado o Form1 por predefinição.
  2. No menu Project , seleccionar componentes , seleccione Controlos comuns do Microsoft Windows e, em seguida, clique em OK .
  3. Adicione um controlo ListView ao Form1.
  4. Cole o seguinte código 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 o exemplo.
  6. Clique item "dois" no controlo ListView . Isto deve resultar em texto do item "dois" que está a ser apresentados na janela depuração/imediata.
  7. Aguarde um momento e, em seguida, clique novamente o item "dois". Isto resulta no texto do item "dois" que está a ser apresentada 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 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: 257495  (http://support.microsoft.com/kb/257495/en-us/ )
Partilhar
Opções de suporte adicionais
Fóruns de Suporte da Comunidade Microsoft
Contacte-nos directamente
Encontre um parceiro certificado Microsoft
Loja Microsoft