2017-11-15 6 views
0

Ich bin derzeit an einem Projekt arbeiten, wo ich Städte und ihre Postleitzahlen zu verwalten. Deshalb habe ich die Brache Objekt:C# Textbox: Bind Objekt der Vorschlagsliste

class Place 
{ 
    Guid Id { get; set; } 
    string Name { get; set; } 
    int ZipCode { get; set; } 

    ... further fields 
} 

und List<Place> mit einer Reihe von Place gefüllt. Jetzt habe ich eine Textbox, wo ich den Namen der Stadt oder ihre Postleitzahl eingeben kann. Ich beiden Fälle möchte ich eine Vorschlagsliste erhalten, die wie dieses

Beispiel mit der eingegebenen Eingabe Übereinstimmen: Eingang = "1234" oder "City"

  • 12341 cityone
  • 12342 CityTwo
  • 12343 CityThree
  • ...

Wenn ich als ein Element aus dieser Vorschlagsliste wähle ich die damit verbundeneerhalten möchtenals Rückgabewert. Wie kann ich diese Funktion in C# mit einer WindowsFormsApplication implementieren?

+0

[Ist das, was Sie suchen] (https://stackoverflow.com/a/7556418/424129)? –

Antwort

0

Was Sie gefragt haben, ist keine einfache oder einzelne Frage. Ich denke, Sie können eine versteckte ListBox unterhalb der TextBox haben, wo der Benutzer Text eingeben wird.

Jetzt hat ein Ereignis genannt OnTextChanged. Dieses Ereignis wird jedes Mal ausgelöst, wenn sich der Text ändert. Dies bedeutet, dass dieses Ereignis ausgelöst wird, wenn ein Benutzer ein Zeichen in die entsprechende TextBox einfügt oder löscht.

können Sie dieses Ereignis verwenden, um die Liste zu filtern, die in Ihrer List-Box anzuzeigen.

So etwas wie dieses

//Imagine the TextBox ID as CityZipTextBox and ListBox ID as CityZipSuggestionsListBox 
protected override void OnTextChanged(EventArgs e) 
{ 
    string txtCityZip = CityZipTextBox.Text; 
    List<Place> suggestedPlaces = filterCode;//Code to filter the full list using the TextBox content 
    CityZipSuggestionsListBox.DataSource = suggestedPlaces; 
} 

Does diese Hilfe?