Имя переменной не так важно, как тип переменной и элементы управления, которые используются для отображения.
Независимо от элемента управления и типа, вам необходимо отфильтровать данные в новую переменную, ипередайте это в ваш элемент управления для отображения.
В следующем коде для отображения используется ListBox (lbAvailable
), а для ввода значения для фильтрации ListBox - текстовое поле (txtFilter
).Обязательно включите ссылку на LINQ.
private int _filterLength = 0;
private List<Object> _originalItems;
private void txtFilter_TextChanged(object sender, EventArgs e)
{
if (txtFilter.Text.Length < _filterLength)
{
// reset DataSource if filter has had chars deleted
// so we can re-filter on the original mainly for deletions)
lbAvailable.DataSource = _originalItems;
}
_filterLength = txtFilter.Text.Length;
// only filter if... there is a filter
if (_filterLength > 0)
{
ApplyFilterToAvailable();
}
}
private void ApplyFilterToAvailable()
{
var myOtherList = lbAvailable.Items.Cast<Object>().ToList();
lbAvailable.DataSource = null;
var filtered = myOtherList.Where(x => x.ToString().Contains(txtFilter.Text)).ToList();
lbAvailable.DataSource = filtered;
}
Если вам нужно увидеть больше окружающего кода, источник доступен на элементе пользовательского выбора
Youпришлось бы адаптировать его для любых элементов управления, которые вы используете - вероятно, DataGrid?