Pregunta

En las ventanas forma un cuadro de texto se puede convertir en un cuadro de texto de autocompletar, dándole una simple lista de cadenas o dándole una fuente personalizada que sólo puede ser una AutoCompleteCollection que es una lista escrita a máquina fuerte de cadenas. Me gustaría ser capaz de agregar una clave a cada string..so que cada vez que se selecciona cualquier sugerencia que puedo agarrar esa clave.

yo podría estar llegando un blank..but ¿alguien tiene una sugerencia? Gracias de antemano

¿Fue útil?

Solución

El AutoCompleteStringCollection clase no está sellado de manera ciertamente se podría derivar de ella y crear una sobrecarga de Add que toma dos parámetros:. Una clave y un valor

A continuación, puede realizar un seguimiento de que en un diccionario. Vas a tener que almacenar la cadena dos veces (una vez en la colección de la clase base y una vez en su diccionario), pero luego se puede añadir un método de búsqueda de esta manera:

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

}

Otros consejos

Si he entendido bien, desea que el valor en el cuadro de texto (que puede ser automático sugirió) tener un valor asociado. Se podría hacer eso mediante la creación de un Dictionary<string, string> con el texto TextBox como la clave y lo que está llamando la 'clave' como el valor. Siempre que lo desee para localizar la 'clave' para un valor TextBox en particular, se puede comprobar el diccionario para ello.

Por supuesto, un TextBox puede no ser la mejor manera de representar los datos si tiene que haber una llave. Si debe haber una tecla, el ComboBox (con DropDownStyle establecido en ComboBoxStyle.DropDownList) podría ser una mejor opción.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top