コンポジットフィルタ(複数のフィルタ条件)でオブジェクトリストビューをフィルタリングしようとしていますが、デフォルトのハイライトテキストレンダラは最初のフィルタのテキストのみをレンダリングします。オブジェクト一覧表示コンポジットフィルタを使用したハイライトレンダラー
すべてのフィルタに適用する方法や、複数のテキストレンダラをフィルタごとに使用する方法がありますか?
私はいくつかのC & Pコードは、このソリューションは、私の作品
public void Filter (string txt, MatchKind matchKind) {
bool filterByAll;
IEnumerable<string> terms = SplitSearchTerms(txt, out filterByAll);
List<IModelFilter> modelFilters = new List<IModelFilter>();
foreach (string term in terms) {
IModelFilter filter;
switch (matchKind) {
case MatchKind.Contains:
default:
filter = TextMatchFilter.Contains(_olv, term);
break;
case MatchKind.Prefix:
filter = TextMatchFilter.Prefix(_olv, term);
break;
case MatchKind.Regex:
filter = TextMatchFilter.Regex(_olv, term);
break;
}
modelFilters.Add(filter);
}
CompositeFilter compositeFilter;
if (filterByAll) {
compositeFilter = new CompositeAllFilter(modelFilters);
} else {
compositeFilter = new CompositeAnyFilter(modelFilters);
}
//Only highlights text from the first filter
HighlightTextRenderer renderer = _olv.DefaultRenderer as HighlightTextRenderer;
if (renderer != null) {
SolidBrush brush = renderer.FillBrush as SolidBrush ?? new SolidBrush(Color.Transparent);
if (brush.Color != Color.LightSeaGreen) {
brush.Color = Color.LightSeaGreen;
renderer.FillBrush = brush;
_olv.DefaultRenderer = renderer;
}
} else {
MessageBox.Show(@"Renderer is null!");
}
_olv.ModelFilter = compositeFilter;
}
私は同じ問題があります。解決策を見つけることはどんな運がありますか?かなり古い投稿です、私は知っています:) – Michael
残念なことに:( – Michael