Here some Code
public partial class ListCtrl : UserControl
{
private IListCtrlFilter filter;
private BackgroundWorker filterWorker;
private List<ListViewItem> unfilterdItems = new
List<ListViewItem>();
...
void filterWorker_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
List<ListViewItem> unfiltered = e.Argument as
List<ListViewItem>;
if filter;!= null)
{
listView.Items.Clear();
foreach (ListViewItem item in unfiltered)
{
if (worker.CancellationPending)
return;
if (filter.Include(item))
worker.ReportProgress(0, item);
}
}
}
void filterWorker_ProgressChanged(object sender,
ProgressChangedEventArgs e)
{
listView.Items.Add(e.UserState as ListViewItem);
}
...
}
|