7
votes

Remplacer ou surcharger une règle d'apporter

J'ai une zone de texte qui envoie des commandes à un instrument. J'ai ajouté la fonction d'autocomplete à cette zone de texte et les choses vont plus facilement maintenant.

Ce que je pense améliorer cela, c'est d'ajouter une possibilité que lorsque l'utilisateur entre une commande (juste un texte) alors que SANCOMPOMPÈRE trouve un match. Une description de cette commande.

Pour le moment, j'ai toutes les chaînes autocomplètes dans un fichier texte et je le charre lorsque l'application commence. Le texte de texte contient des lignes telles que ceci: xxx

donc ce qui se passe dans mon application est que, comme le mode Dutocompléte est dans SuggenAppend Mode, la description de la commande pénètre dans la zone de texte (ce sera le même si je ne le mettrai que dans suggérer mode)

Ce que j'ai besoin de savoir, c'est comment forcer l'autocomplete à ajouter le texte alors que son

  1. n'ajoute aucun texte à partir de # char en ajoutant le texte suggéré
  2. Garni () Le texte pour éviter ces espaces que vous voyez dans la source de texte

    update 1 OK, je pense que le seul moyen est de faire une nouvelle classe et d'hériter de autocompletringcollection et dans cette nouvelle classe, annuler la méthode de retour du texte suggéré (ajoute). Je n'ai vraiment aucune idée de ce que je dois faire: xxx

    update 2 J'ai découvert que les méthodes dans autocompletringcollection ne sont pas remplacées. Je cherche un moyen de changer la méthode de la méthode [] (pour être honnête, je ne sais pas quoi l'appeler!) Fonctionne. Est-ce que quelqu'un a une idée de cela?

    Entrez la description de l'image ici < p> Mise à jour 3 Lorsque le texte sans #desc est entré dans la zone de texte, j'ai un gestionnaire d'événements pour la clé qui transférera la commande à l'instrument.


4 commentaires

Pouvez-vous publier votre code existant de manipulation de l'autocalistion? Il est plus facile de suggérer une solution de code en regardant le code.


Peut-être devriez-vous utiliser .ReMove (base.text.lastindexof ('#'), base.text.longueur - 1) .trim (); dans le moment où vous chargez le fichier.


Non! Toute l'idée est d'afficher le texte après # à l'intérieur de la boîte automatique! Je veux juste que ce ne passe pas dans ma boîte de texte.


[] s'appelle un indexeur. C'est ce qu'on appelle un indexeur parce que vous y mettez un index.


5 Réponses :


1
votes

Rester avec l'utilisation de la méthode Suggérer et charger votre fichier texte sous forme de source personnalisée pour la fonctionnalité complète automatique de la zone de texte.

Vous pouvez utiliser l'événement laisser de la zone de texte pour supprimer tout texte après # et couper le résultat: xxx

de cette façon, la description reste dans la liste complète automatique, mais dès que vous onglet ou laissez le Textbox, seule la commande reste.


1 commentaires

Bonjour, merci de réponse. Je suis désolé que j'ai oublié de mentionner que je dispose également d'un événement de clé pour la zone de texte qui sur la touche Entrée passera la commande à l'instrument. Cela devrait également être pris en charge (je pense que ce sera la même chose que votre méthode ...) Je vais l'essayer bientôt.



-1
votes

La propriété autocomplete de TEXTBOX est définie suggestionAppend, ce qui signifie qu'il ajoute à la fois le texte et la description. Donc, vous devez définir une propriété autocomplete de Textbox sur la valeur "Suggérer" uniquement.

Selon MSDN, la propriété Autocomplecte peut prendre quatre valeurs d'énumjet à savoir p>

Les valeurs suivantes sont les valeurs d'autocompletémode: P>

Append : Appends the remainder of the most likely candidate string to the existing characters, highlighting the appended characters.

Suggest : Displays the auxiliary drop-down list associated with the edit control. This drop-down is populated with one or more suggested completion strings.

SuggestAppend : Appends both Suggest and Append options.

None : Disables automatic completion. This is the default.


2 commentaires

Hmmm ... Même en mode Suggérien, si l'utilisateur appuyez sur Entrée, la chaîne suggérée sélectionnée entrera dans la zone de texte, aucune différence par rapport à la suggestion.


Je pense qu'il y a un moulage de code. Vous devez probablement vérifier depuis le début. J'ai collé le lien qui a un exemple complet, vous pouvez l'utiliser comme référence et croisement de la vérification. TECHNET.MICROSOFT.COM/EN-US/QUERY/CHFF42ZW



0
votes

Voici le lien qui a l'exemple complet pour l'autocomplete

http://technet.microsoft.com/en-us/query/chff42zw


0 commentaires

1
votes

Plutôt que d'essayer de combattre la fonctionnalité automatique de la mise en œuvre de Microsoft, je vous suggère fortement d'utiliser une combinaison de plusieurs colonnes à la place.

Tous ceux que nous avons utilisés en matière d'achèvement de la prise en charge de support, vous pouvez donc stocker votre commande dans la première colonne et avoir votre valeur, puis stockez votre description dans la deuxième colonne.

Il existe un énorme nombre de contrôles disponibles à l'achat (Infragisme, Intersoft, SyncFusion, etc.) et vous pouvez probablement trouver des versions gratuites ou auto-construites sur divers sites tels que CodeProject.

Aller à cet itinéraire devrait vous faire gagner beaucoup de temps.


0 commentaires

0
votes

comme réponse à votre mise à jour nr. 2: La [] est en fait une propriété d'index.

Votre classe implémente une collection. Vous pouvez obtenir un objet à Index X à l'aide du code codunique: p>

 public string this[int index] {get ...} {set...} 


0 commentaires