2011-11-02 12 views
10
// [in designer] textBoxInContext.AutoCompleteMode = Suggest 
// [in designer] textBoxInContext.AutoCompleteSource = CustomSource 
AutoCompleteStringCollection autoComplete = new AutoCompleteStringCollection(); 
autoComplete.AddRange(myArrayofStrings); 
textBoxInContext.AutoCompleteCustomSource = autoComplete; 

Tengo este código que funciona bien según lo documentado en MSDN.

Problema: si el usuario escribe "PS", muestra toda la cadena que comienza con "PS"; Me gustaría mostrar todas las cadenas que contengan "PS"Autocompletar [contiene en lugar de comenzar con] en winform TextBox

¿Alguna sugerencia?

+1

Esto debería ser una tarea bastante simple de lograr, pero necesitaríamos ver más de su código para identificar la línea a cambiar. algo como 'var results = autoComplete.Where (x => x.StartsWith (" PS ");' se convierte en 'var results = autoComplete.Where (x => x.Contains (" PS ");' – JConstantine

+0

@JLevett: eso es todo el código. Estoy intentando usar la función de autocompletar proporcionada por MS. [http://msdn.microsoft.com/en-us/library/system.windows.forms.textbox.autocompletemode%28v=vs.90%29 .aspx] – karephul

+1

Puede echarle un vistazo a [http://stackoverflow.com/questions/1524166/autocomplete-textbox-with-features-of-like-clause-example-helloc-c-sharp-window] from the " la sección de enlaces relacionados a la derecha - parece que este comportamiento es casi imposible. – jCoder

Respuesta

0

La sugerencia estúpida pero divertida: crea una clase que herede de AutoCompleteStringCollection y juega con ella en la depuración para ver si puedes simular esto.

La sugerencia normal: haga su propia autocompletar con un cuadro de lista.

-2

Me encontré con el mismo problema y WPF Autocomplete Textbox Control es lo que encontré en CodeProject, funciona bastante bien. Está escrito en WPF, pero puede modificarlo para satisfacer sus necesidades.

+0

La respuesta no proporciona una solución a la pregunta, es lo mismo que el problema del usuario. –

+0

Esto es bastante antiguo ... Como recuerdo, pasé bastante tiempo para verificar que el enlace provisto realmente funcionó en un proyecto de WinForm. Creo que sería mejor dejar el enlace en lugar de pegar una gran cantidad de bacalao e aquí. – kennyzx

+0

Después de todo, es básicamente manipulación de cadena ... ambos configuran la propiedad Text de un WinForm/WPFTextBox, ¿verdad? – kennyzx

1

Si no encuentra otra manera, sugiero hacerlo manualmente:

  1. Utilizar un cuadro combinado con artículos (podrás llenar manualmente más adelante).
  2. Tiene una matriz de cadenas con sus posibles sugerencias.
  3. En el evento combobox.TextChanged o KeyUp siga su texto y lo comparan con su matriz de cadenas de cualquier manera que desee y, después de eliminar un combobox.Items, agregue los resultados encontrados en el combobox.Items y asegúrese de establecer la propiedad DroppedDown a cierto si usted tiene encontrado sugerencias.
Cuestiones relacionadas