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

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

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
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 timerTimer1.Interval = 1000Timer1.Start()
    Visual c# .NET
    //set the interval  and start the timertimer1.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 secondssearchstr = ""
    Visual c# .NET
    //empty the string for every 1 secondssearchstr="";
  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 : Pour plus d'informations sur le Concepteur Windows Forms et les classes partielles, visitez ce site MSDN Web :
  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

Avertissement : Cet article a été traduit automatiquement.

Propriétés

ID d'article : 814362 - Dernière mise à jour : 05/11/2007 07:08:50 - Révision : 2.8

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

  • kbmt kbvs2005swept kbvs2005applies kbctrl kbcontrol kbproperties kbdisplay kbwindowsforms kbcombobox kbprb KB814362 KbMtfr
Commentaires