void Filter(FastObjectListView olv, string txt, int matchKind) { olv.OwnerDraw = true; TextMatchFilter filter = null; if (!String.IsNullOrEmpty(txt)) { switch (matchKind) { case 0: default: filter = TextMatchFilter.Contains(olv, txt); break; case 1: filter = TextMatchFilter.Prefix(olv, txt); break; case 2: filter = TextMatchFilter.Regex(olv, txt); break; } } // Setup a default renderer to draw the filter matches if (filter == null) { olv.DefaultRenderer = null; olv.ModelFilter = null; } else { olv.DefaultRenderer = new HighlightTextRenderer(filter); olv.ModelFilter = filter; // Uncomment this line to see how the GDI+ rendering looks //olv.DefaultRenderer = new HighlightTextRenderer { Filter = filter, UseGdiTextRendering = false }; } // Some lists have renderers already installed HighlightTextRenderer highlightingRenderer = olv.GetColumn(0).Renderer as HighlightTextRenderer; if (highlightingRenderer != null) { highlightingRenderer.Filter = filter; } IList objects = olv.Objects as IList; if ((objects == null) || (objects.Count == olv.Items.Count)) { this.toolStripStatusLabel1.Text = string.Empty; } else { this.toolStripStatusLabel1.Text = String.Format("Filtered {0} items down to {1} items", objects.Count, olv.Items.Count); } }