Vous êtes actuellement hors ligne, en attente de reconnexion à Internet.

CORRECTIF : ListView exécute l'événement ItemClick deux fois avec jeu LabelEdit manuel

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
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
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 :
194022Information : Visual Studio 6.0 Service Packs, quoi, où, pourquoi

194295Comment 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 :
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 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. 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.
SP4

Avertissement : Cet article a été traduit automatiquement.

Propriétés

ID d'article : 257495 - Dernière mise à jour : 02/23/2014 14:02:50 - Révision : 2.2

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

  • kbnosurvey kbarchive kbmt kbactivexevents kbbug kbctrl kbfix kblistview kbvs600sp4fix kbvs600sp5fix KB257495 KbMtfr
Commentaires