Domanda

In Windows Form una casella di testo può essere trasformato in una casella di testo automatico da dandogli un semplice elenco di stringhe o dando una fonte personalizzato che può essere solo una AutoCompleteCollection che è un forte lista tipizzata di stringhe. Mi piacerebbe essere in grado di aggiungere una chiave per ogni string..so che ogni volta che viene selezionato ogni suggerimento che posso prendere quella chiave.

I potrebbe essere solo disegnando una blank..but Qualcuno ha un suggerimento? Grazie in anticipo

È stato utile?

Soluzione

L'AutoCompleteStringCollection classe non è sigillata in modo si potrebbe certamente derivare da esso e creare un sovraccarico di aggiungere che accetta due parametri:. Una chiave e un valore

Quindi è possibile tenere traccia che in un dizionario. Dovrete memorizzare la stringa due volte (una volta nella collezione della classe base, e una volta nel vostro dizionario), ma è possibile aggiungere un metodo di ricerca in questo modo:

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;
        }
    }

}

Altri suggerimenti

Se ho capito bene, si desidera che il valore nella casella di testo (che può essere auto suggerito) per avere un valore associato. Si potrebbe fare che con la creazione di un Dictionary<string, string> con il testo TextBox come chiave e ciò che si sta chiamando la 'chiave' come valore. Ogni volta che si desidera individuare la 'chiave' per un particolare valore TextBox, è possibile controllare il dizionario per esso.

Naturalmente, un TextBox non può essere il modo migliore per rappresentare i dati, se ci deve essere una chiave. Se ci deve essere una chiave, il ComboBox (con DropDownStyle impostato ComboBoxStyle.DropDownList) potrebbe essere una soluzione migliore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top