2012-06-18 32 views
0

我從一個XML文件中加載了一個樹狀圖數據。我想在用戶在文本框中鍵入內容時執行搜索。這是做到這一點的正確方法嗎?我只想過濾數據。請給我看一些例子。C#:從樹狀圖搜索

以下代碼無法正常工作。

textBox1.Enter += new EventHandler(txtSearch_TextChanged); 

private void txtSearch_TextChanged(object sender, EventArgs e) 
     { 

      foreach (TreeNode node in this.treeView1.Nodes) 
      { 

       if (node.Text.ToUpper().Contains(this.textBox1.Text.ToUpper())) 
       { 

        treeView1.SelectedNode = node; 

        break; 

       } 
    } 
+1

代碼的哪些部分不工作?嘗試把一些斷點,看看它是如何與不同的輸入 –

+0

@Ozgur Dogus:當我在文本框中鍵入的東西,沒有搜索發生在treeview – linguini

+0

所以textchanged事件不會觸發? –

回答

2

我想另一個問題可能是因爲你提供的代碼只能看到頂層的節點。您需要創建一個遞歸遍歷節點的子節點直到找到匹配的方法。事情是這樣的:

private TreeNode FindNode(TreeNode node, string searchText) 
{ 
    TreeNode result = null; 

    if (node.Text == searchText) 
    { 
    result = node; 
    } 
    else 
    { 
    foreach(TreeNode child in node.Nodes) 
    { 
     result = FindNode(child, searchText); 
     if (result != null) 
     { 
     break; 
     } 
    } 
    } 
    return result; 
} 
2
textBox1.Enter += new EventHandler(txtSearch_TextChanged); 

private void txtSearch_TextChanged(object sender, EventArgs e) 
     { 

      foreach (TreeNode node in this.treeView1.Nodes) 
      { 

       if (node.Text.ToUpper().Contains(this.textBox1.Text.ToUpper())) 
       { 
        treeView1.Select(); // First give the focus to the treeview control, 
        //doing this, the control is able to show the selectednode. 
        treeView1.SelectedNode = node; 

        break; 

       } 
    }