DetailPage-MSS-KB

Base de connaissances

Numéro d'article: 257495 - Dernière mise à jour: mardi 7 août 2007 - Version: 2.2

 

Sommaire

Symptômes

Lorsque vous cliquez sur un élément dans un contrôle ListView, l'événement ItemClick pour le contrôle ListView exécute deux fois.

Cause

Ce problème est dû au fait quelle étiquette manuelle modification est implémentée. Lorsque vous sélectionnez un élément, l'événement ItemClick se déclenche normalement, mais, en outre, le contrôle ListView permet une minuterie intégrée dont retard est égale à celle de la durée d'un double-clic. Lorsque ce délai s'écoule, du minuteur est déclenché et le code de cette minuterie détermine si le contrôle ListView Entrez l'étiquette en mode d'édition. Cas d'annulation de la modification d'étiquette, qui est toujours le cas de modification d'étiquette manuelle, puis la sélection est effacée et re-selected. Cette re-selection déclenche deuxième ItemClick.

Vous pouvez provoquer ce problème se produise de deux manières. La première consiste à définir la propriété LabelEdit de ListView pour lvwManual (comme dans l'exemple de code dans la section "Informations supplémentaires" de cet article). Une autre façon de reproduire ce comportement consiste à affecter à la propriété LabelEditlvwAutomatic et à définir Annuler égal à True dans l'événement BeforeLabelEdit de ListView.

Résolution

Pour résoudre ce problème, installez le dernier service pack Visual Studio 6.0.

Si l'installation du service pack n'est pas une option ou si vous exécutez une version antérieure à la version 6.0 de Visual Basic, affectez à la propriété LabelEdit du contrôle ListViewlvwAutomatic et ne définissez pas Annuler égal à True le dans l'événement BeforeLabelEdit de ListView.

Statut

Microsoft a confirmé l'existence de ce bogue dans les produits Microsoft répertoriés au début de cet article. Ce bogue a été corrigé dans le dernier service pack Visual Studio 6.0.

Pour plus d'informations sur les service packs Visual Studio, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la base de connaissances Microsoft :
194022  (http://support.microsoft.com/kb/194022/EN-US/ ) Information : Visual Studio 6.0 Service Packs, quoi, où, pourquoi

194295  (http://support.microsoft.com/kb/194295/EN-US/ ) Comment faire : Savoir qu'un Service Pack Visual Studio est installé
Pour télécharger le dernier service pack Visual Studio, reportez-vous au site Web de Microsoft à l'adresse suivante :
http://msdn2.microsoft.com/en-us/vstudio/Aa718353.aspx (http://msdn2.microsoft.com/en-us/vstudio/Aa718353.aspx)

Plus d'informations

Procédure pour reproduire le problème

  1. Créer un nouveau projet Standard EXE dans Visual Basic. Form1 est créé par défaut.
  2. Dans le menu projet, choisissez des composants, sélectionnez les Contrôles communs Microsoft Windows et puis cliquez sur OK.
  3. Ajoutez un contrôle ListView à Form1.
  4. Collez le code suivant dans la fenêtre code de 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. Exécuter l'exemple.
  6. Cliquez sur l'élément "deux" dans le contrôle ListView. Cela doit se traduire par le texte d'élément "deux" en cours affiché dans la fenêtre Débogage/immédiate.
  7. Patientez un instant, puis cliquez à nouveau sur élément "deux". Cela se traduit par le texte d'élément "deux" en cours affiché deux fois dans la fenêtre Débogage/immédiate.

Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual Basic 6.0 Édition initiation
  • Microsoft Visual Basic 6.0 Édition professionnelle
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Basic Control Creation Edition
  • Microsoft Visual Basic 5.0 Édition initiation
  • Microsoft Visual Basic 5.0 Édition professionnelle
  • Microsoft Visual Basic 5.0 Édition Entreprise
Mots-clés : 
kbmt kbactivexevents kbbug kbctrl kbfix kblistview kbvs600sp4fix kbvs600sp5fix KB257495 KbMtfr
Traduction automatiqueTraduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d’articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d’avoir accès, dans votre propre langue, à l’ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s’exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s’efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 257495  (http://support.microsoft.com/kb/257495/en-us/ )
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.
Partager
Options de support supplémentaire
Forums du support Microsoft Community
Nous contacter directement
Trouver un partenaire Microsoft Certified Partner
Microsoft Store