Éléments du contrôle ComboBox ne sont pas sélectionnés pendant que vous tapez les premiers caractères

Traductions disponibles Traductions disponibles
Numéro d'article: 814362 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Symptômes

Vous affectez à la propriété DropDownStyle du contrôle ComboBoxDropDownList et tapez les premiers caractères de l'élément dans la zone de liste déroulante au moment de l'exécution. L'élément sélectionné dans la zone de liste déroulante ne correspond pas aux caractères que vous tapez. L'élément sélectionné dans la zone de liste déroulante est basé sur le dernier caractère que vous tapez. Par exemple, si les éléments dans la zone de liste déroulante sont rouges, chêne et ont augmenté, lorsque vous tapez ro dans la zone de liste déroulante, le focus est sur chêne au lieu de rose.

Cause

Ce problème se produit car la recherche de ComboBox est basée sur un seul caractère au lieu du jeu de caractères complète.

Contournement

Pour contourner ce problème, ajoutez le code qui recherche les éléments avec tous les caractères que vous tapez dans la zone de liste déroulante. Le code doit également sélectionner l'élément qui correspond au tous les caractères. Pour effacer le texte recherché à intervalles réguliers, utilisez un contrôle Timer. Pour ce faire, procédez comme suit :
  1. Dans Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005, créez un nouveau Windows application à l'aide de Visual Basic .NET, Visual Basic 2005 ou Visual c# .NET.

    Par défaut, Form1 est créé.
  2. À partir de la boîte à outils, faites glisser un Timer à Form1.
  3. Dans la fenêtre Propriétés, définissez Enabled propriété la valeur True.
  4. Ajoutez l'instruction suivante à la section de déclaration de variable du code :

    Visual Basic .NET ou Visual Basic 2005
    Dim searchstr As String
    Visual c# .NET
    string searchstr;
  5. Ajoutez le code suivant à l'événement Load de Form1 :

    Visual Basic .NET ou Visual Basic 2005
    'set the timer interval and start the timer
    Timer1.Interval = 1000
    Timer1.Start()
    Visual c# .NET
    //set the interval  and start the timer
    timer1.Interval =1000;
    timer1.Start();
  6. Ajoutez le code suivant à l'événement Tick du Timer1 :

    Visual Basic .NET ou Visual Basic 2005
    'empty the string for every 1 seconds
    searchstr = ""
    Visual c# .NET
    //empty the string for every 1 seconds
    searchstr="";
  7. Ajoutez le code suivant à l'événement KeyUp de ComboBox1 :

    Visual Basic .NET ou Visual Basic 2005
          searchstr = searchstr & Chr(e.KeyValue)
          ' If the Search string is greater than 1 then use custom logic
          If searchstr.Length > 1 Then
             Dim index As Integer
             ' Search the Item that matches the string typed
             index = ComboBox1.FindString(searchstr)
             ' Select the Item in the Combo
             ComboBox1.SelectedIndex = index
          End If  
    Visual c# .NET
             searchstr = searchstr + Convert.ToChar(e.KeyCode);
             // If the Search string is greater than 1 then use custom logic
             if (searchstr.Length > 1)
             {
                int index;
                // Search the Item that matches the string typed
                index=comboBox1.FindString(searchstr);
                // Select the Item in the Combo
                comboBox1.SelectedIndex=index;
             }

Statut

Ce comportement est voulu par la conception même du produit.

Plus d'informations

Étapes à suivre pour reproduire le comportement

  1. Dans Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005, créez un nouveau Windows application à l'aide de Visual Basic .NET, Visual Basic 2005 ou Visual c# .NET.

    Par défaut, Form1 est créé. note vous devez modifier le code dans Visual Basic 2005. Par défaut, Visual Basic crée deux fichiers pour le projet lorsque vous créez un projet Windows Forms. Si le formulaire appelé Form1, les deux fichiers qui représentent le formulaire sont appelés Form1.vb et Form1.Designer.vb. Vous écrivez le code dans le fichier Form1.vb. Le Concepteur Windows Forms écrit le code dans le fichier Form1.Designer.vb. Le Concepteur Windows Forms utilise le mot clé partial pour diviser l'implémentation de Form1 en deux fichiers distincts. Ce comportement empêche le code généré par le Concepteur d'entrecoupé par votre code.

    Pour plus d'informations sur les nouvelles améliorations de langage Visual Basic 2005, reportez-vous au site Web de MSDN (Microsoft Developer Network) à l'adresse suivante :
    http://msdn2.microsoft.com/en-us/library/ms379584(vs.80).aspx
    Pour plus d'informations sur le Concepteur Windows Forms et les classes partielles, visitez ce site MSDN Web :
    http://msdn2.microsoft.com/en-us/library/ms171843.aspx
  2. À partir de la boîte à outils, faites glisser un contrôle ComboBox vers Form1.
  3. Cliquez avec le bouton droit sur ComboBox1, puis cliquez sur Propriétés.
  4. Dans la fenêtre Propriétés, sélectionnez DropDownStyle et définissez la propriété DropDownList.
  5. Dans la fenêtre Propriétés, Sélectionnez, puis cliquez sur le bouton de sélection (...).
  6. Dans l' Éditeur de collections de chaînes, tapez rouge, chêne et ont augmenté sur des lignes différentes, puis cliquez sur OK.
  7. Dans le menu Déboguer, cliquez sur Démarrer pour exécuter l'application.
  8. Tapez les roComboBox1.

Références

Pour plus d'informations, reportez-vous au site Web MSDN à l'adresse suivant :

Propriété ComboBox.DropDownStyle
http://msdn2.microsoft.com/en-us/library/system.windows.forms.combobox.dropdownstyle(vs.71).aspx

Propriétés

Numéro d'article: 814362 - Dernière mise à jour: vendredi 11 mai 2007 - Version: 2.8
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Initiation
  • Microsoft Visual Basic .NET 2002 Initiation
  • Microsoft Visual C# .NET 2003 Initiation
  • Microsoft Visual C# .NET 2002 Initiation
Mots-clés : 
kbmt kbvs2005swept kbvs2005applies kbctrl kbcontrol kbproperties kbdisplay kbwindowsforms kbcombobox kbprb KB814362 KbMtfr
Traduction 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: 814362
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.

Envoyer des commentaires

 

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