2012-01-25 233 views
0

我试图在您键入时执行搜索(如在iTunes中)。我正在使用ObjectListView。此外,我有一个文本框,用于执行搜索,如下所示:有人能告诉我这段代码有什么问题吗?

private void textBoxSearch_TextChanged(object sender, EventArgs e) 
     { 

      string txt = textBoxSearch.Text; 
      TextMatchFilter filter = null; 
      if (!String.IsNullOrEmpty(txt)) 
      { 
       filter = TextMatchFilter.Contains(myObjectListView, txt); 
      } 
      // Setup a default renderer to draw the filter matches 
      if (filter == null) 
       myObjectListView.DefaultRenderer = null; 
      else 
      { 
       myObjectListView.DefaultRenderer = new HighlightTextRenderer(filter); 

       // Uncomment this line to see how the GDI+ rendering looks 
       myObjectListView.DefaultRenderer = new HighlightTextRenderer { Filter = filter, UseGdiTextRendering = false }; 
      } 

      // Some lists have renderers already installed 
      HighlightTextRenderer highlightingRenderer = myObjectListView.GetColumn(0).Renderer as HighlightTextRenderer; 
      if (highlightingRenderer != null) 
       highlightingRenderer.Filter = filter; 

      myObjectListView.ModelFilter = filter; 
     } 

有人可以找出为什么这不起作用吗? 上面的代码是为了过滤搜索结果,因为用户在文本框中键入内容(就像iTunes一样,如果您曾经使用过iTunes)。显然,到目前为止,没有任何反应。看起来这个代码甚至没有执行。

+2

(1)它是什么_meant_做? (2)它真的做了什么?对于这两个问题的答案,以及显示问题的最小代码示例(您似乎至少有这样的赞誉)对于错误报告至关重要。 – paxdiablo

+0

以上代码旨在过滤搜索结果,因为用户在文本框中键入内容。显然,到目前为止,没有任何反应。看起来这个代码甚至没有执行。 –

+0

您是否通过调试器运行代码以查看它是否确实执行或不执行?如果你使用断点: – ChrisF

回答

2

this,在ObjectListView有一个名为UseFiltering属性,该属性是false默认情况下,必须设置为true启用过滤。

+0

不能相信我一直都在错过这个设置。谢谢。这解决了这个问题。 –

相关问题