コード例 #1
0
        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);
            }
        }