FIX: ListView esegue l'evento elementoFare clic due volte con LabelEdit su manuale

Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 257495
Questo articolo è stato archiviato. L’articolo, quindi, viene offerto “così come è” e non verrà più aggiornato.
Sintomi
Quando si fa clic su un elemento in un controllo ListView , l'evento di elementoFare clic per il controllo ListView si esegue due volte.
Cause
Questo problema è causato dal modo in quale etichetta manuale viene implementata la modifica. Quando si seleziona un elemento, l'evento di ItemClick viene generato in genere, ma il controllo ListView consente inoltre di un timer incorporato cui ritardo è uguale a quello della durata di un doppio clic. Quando questo ritardo è trascorso, evento del timer viene attivato e il codice per questo timer determina se il controllo ListView necessario immettere l'etichetta per la modalità di modifica. Se viene interrotta la modifica delle etichette, che è sempre nel caso di modifica delle etichette manuale, quindi la selezione viene deselezionata e re-selected. Questo re-selection attiva il secondo elementoFare clic .

È possibile causare questo problema si verifica in uno dei due modi. Il primo consiste nell'impostare la proprietà LabelEdit di ListView lvwManual (come nel codice di esempio nella sezione "Informazioni" di questo articolo). Un metodo alternativo per riprodurre questo comportamento è consiste da impostare la proprietà LabelEdit lvwAutomatic e impostare l'opzione Annulla uguale a true nell'evento BeforeLabelEdit di ListView .
Risoluzione
Per risolvere questo problema, è necessario installare il service pack più recente per Visual Studio 6.0.

Se l'installazione del service pack non è un'opzione o si esegue una versione precedente alla versione 6.0 di Visual Basic, impostare la proprietà LabelEdit del controllo ListView lvwAutomatic e che non viene impostato uguale Cancel su true nell'evento BeforeLabelEdit di ListView .
Status
Microsoft ha confermato che questo un bug nei prodotti Microsoft elencati all'inizio di questo articolo. Questo problema è stato risolto nel service pack più recente di Visual Studio 6.0.

Per ulteriori informazioni sui service pack di Visual Studio, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportato di seguito:
194022INFORMAZIONI: Visual Studio 6.0 Service Pack, che, WHERE, perché

194295HOWTO: Determinare la di un Service Pack di Visual Studio È installati
Per scaricare il service pack più recente di Visual Studio, il seguente sito Microsoft Web:
Informazioni

Procedura per riprodurre il problema

  1. Creare un nuovo progetto EXE Standard in Visual Basic. In base all'impostazione predefinita, viene creato il progetto Form1.
  2. Dal menu progetto , scegliere componenti , selezionare Microsoft Windows Common Controls e quindi fare clic su OK .
  3. Aggiungere un controllo ListView a Form1.
  4. Incollare il codice riportato di seguito nella finestra del codice di Form1:
    Option ExplicitPrivate 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 SubPrivate Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)    Debug.Print ListView1.SelectedItem.TextEnd Sub					
  5. Esecuzione del codice di esempio.
  6. Fare clic su "due" elemento del controllo ListView . Questo dovrebbe determinare il testo della voce "two" viene visualizzato nella finestra immediata/debug.
  7. Attendere qualche minuto e quindi di nuovo elemento "due". In questo modo il testo della voce "due" da visualizzate altre due volte nella finestra immediata/debug.
SP4

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 257495 - Ultima revisione: 02/23/2014 16:26:52 - Revisione: 2.2

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

  • kbnosurvey kbarchive kbmt kbactivexevents kbbug kbctrl kbfix kblistview kbvs600sp4fix kbvs600sp5fix KB257495 KbMtit
Feedback