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

Mam ten kod, który działa dobrze, jak udokumentowano w MSDN.

Problem: jeśli użytkownik wpisze "PS", wyświetli cały ciąg rozpoczynający się od "PS"; Chciałbym wyświetlić wszystkie ciągi zawierające "PS"Autouzupełnianie [zawiera zamiast rozpoczynać] w winformie TextBox

Jakieś wskazówki?

+1

To powinno być dość proste zadanie do osiągnięcia, ale musielibyśmy zobaczyć więcej kodu, aby wskazać linię do zmiany. coś w stylu 'var results = autoComplete.Where (x => x.StartsWith (" PS ");' staje się 'var results = autoComplete.Where (x => x.Contains (" PS ");' – JConstantine

+0

@JLevett: that's cały kod. Próbuję użyć funkcji automatycznego uzupełniania dostarczanej przez MS. [http://msdn.microsoft.com/en-us/library/system.windows.forms.textbox.autocompletemode%28v=vs.90%29 .aspx] – karephul

+1

Możesz rzucić okiem na [http://stackoverflow.com/questions/1524166/autocomplete-textbox-with-features-of-like-clause-example-hello-c-sharp-window] z " powiązane linki "sekcja po prawej stronie - wygląda na to, że takie zachowanie jest prawie niemożliwe – jCoder

Odpowiedz

0

Głupia, ale zabawna sugestia: stwórz klasę, która dziedziczy z AutoCompleteStringCollection i graj z nią podczas debugowania, aby sprawdzić, czy możesz to zmyślić.

Zwykła sugestia: utwórz własną autouzupełnianie z listbox.

-2

Natrafiłem na ten sam problem i WPF Autocomplete Textbox Control jest tym, co znalazłem w CodeProject, działa całkiem nieźle. Jest napisany w WPF, ale możesz go zmodyfikować zgodnie z własnymi potrzebami.

+0

Odpowiedź nie zapewnia rozwiązania tego problemu, jest tak samo jak problem użytkownika –

+0

To jest dość stare ... Jak pamiętam spędziłem dość czasu, aby zweryfikować, że podany link faktycznie działał w projekcie WinForm, po prostu myślę, że lepiej zostawić link, zamiast wklejać ogromny fragment dorsza tutaj. – kennyzx

+0

Po tym wszystkim jest w zasadzie manipulacji ciągiem ... obaj ustawiają właściwość Text z WinForm/WPFTextBox, prawda? – kennyzx

1

Jeśli nie znaleźć inny sposób, proponuję robić to ręcznie:

  1. Użyj combobox bez elementów (będziesz je wypełnić ręcznie później).
  2. Masz tablicę ciągów z ewentualnymi sugestiami.
  3. W przypadku combobox.TextChanged lub KeyUp wziąć swój tekst i porównać go do tablicy ciągów którykolwiek sposób chcesz i po usunięciu combobox.Items, dodać znalezione wyniki do combobox.Items i upewnij się, aby ustawić właściwość DroppedDown true jeśli masz znalazłem sugestie.