Question

Dans les fenêtres forme une zone de texte peut être transformé en une zone de texte de saisie semi-automatique en lui donnant une simple liste de chaînes ou en lui donnant une source personnalisée qui ne peut être AutoCompleteCollection qui est une forte liste dactylographiée de chaînes. Je voudrais être en mesure d'ajouter une clé à chaque string..so que chaque fois que la suggestion est sélectionnée, je peux saisir cette clé.

Je pourrais juste dessinerez un blank..but ce que quelqu'un a une suggestion? Merci à l'avance

Était-ce utile?

La solution

La AutoCompleteStringCollection certainement de classe n'est pas scellé pour que vous puissiez en tirer et de créer une surcharge de Ajouter qui prend deux paramètres:. Une clé et une valeur

Ensuite, vous pouvez suivre que dans un dictionnaire. Vous devrez stocker la chaîne deux fois (une fois dans la collection de la classe de base et une fois dans votre dictionnaire), mais vous pouvez ajouter une méthode de recherche comme ceci:

class KeyedAutoCompleteStringCollection : AutoCompleteStringCollection {

    private readonly Dictionary<string,string> keyedValues =
        new Dictionary<string,string>(StringComparer.OrdinalIgnoreCase);

    public void Add(string value, string key) {
        base.Add(value);
        keyedValues.Add(value, key); // intentionally backwards
    }

    public string Lookup(string value) {
        string key;
        if (keyedValues.TryGetValue(value, out key)) {
            return key;
        }
        else {
            return null;
        }
    }

}

Autres conseils

Si je vous comprends bien, vous voulez que la valeur dans la zone de texte (qui peut être proposé automatiquement) d'avoir une valeur associée. Vous pouvez le faire en créant un Dictionary<string, string> avec le texte de TextBox comme la clé et ce que vous appelez la « clé » comme valeur. Chaque fois que vous souhaitez localiser la « clé » pour une valeur de TextBox particulière, vous pouvez consulter le dictionnaire pour elle.

Bien sûr, un TextBox peut ne pas être la meilleure façon de représenter vos données s'il doit y avoir une clé. S'il doit y avoir une clé, la ComboBox (avec DropDownStyle mis à ComboBoxStyle.DropDownList) pourrait être une meilleure option.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top