Frage

Ist es möglich, den Inhalt einer Listbox in einer Windows Forms-Anwendung zu filtern?

Die Datasource meiner ListBox ist ein Binding ein Bündel von DTOs in einem enthalten:

IList<DisplayDTO>

Ich möchte auf der DTO Eigenschaft filtern, die in der List-Box des Display angegeben ist.

Der Text auf gefiltert wird in einem separaten Textfeld zur Verfügung gestellt.

War es hilfreich?

Lösung

Dies sollte funktionieren:

private void textBox_TextChanged(object sender, EventArgs e)
{
    bindingSource.Filter = string.Format("[{0}] LIKE '%{1}%'",
                                         listBox.DisplayMember,
                                         textBox.Text.Replace("'", "''"));
}

EDIT: Dies funktioniert nur, wenn die zugrunde liegende Datenquelle (bindingSource.DataSource) implementiert IBindingListView. In der FCL, implementiert nur die DataView Klasse diese Schnittstelle.

Sie können Ihre eigene Implementierung durch Erben von BindingList<T> erstellen. Hier einen Artikel die erklärt, wie die Filterfunktionalität hinzuzufügen. Sie können auch verschiedene Implementierungen von SortableBindingList auf Google finden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top