2011-09-15 41 views
5

Tất cả các nút TreeView của tôi có một ID duy nhất cho Độ sâu nút của chúng.Tìm nút TreeView theo giá trị

Tôi muốn đặt Checked=True trên nút TreeView khớp với một giá trị nhất định.

Hiện nay tôi đang làm như sau:

Dim value As Integer = 57 

For Each n As TreeNode In tvForces.Nodes 
    If n.Value = value Then n.Checked = True 
Next 

Có cách nào tốt hơn về việc tìm kiếm các Node mà tôi muốn thiết lập như Checked=True hơn là lặp qua từng nút?

Tôi đang tìm một cái gì đó như:

Dim value As Integer = 57 

n.FindNodesByValue(value)(0).Checked = True 

Có bất cứ điều gì như thế này mà tôi có thể sử dụng không?

+0

Hãy ghi nhớ rằng tvForces.Nodes chỉ được cấp độ đầu tiên (root) nút. Nếu bạn muốn tất cả các nút, bạn sẽ cần phải đi qua cây. –

Trả lời

5

Mã giả (c#) để chứng minh một ý tưởng sử dụng LINQ Where() + List.ForEach():

nodes.Where(node => node.Value == "5") 
    .ToList() 
    .ForEach((node => node.Checked = true)); 

Xem MSDN theo các liên kết ở trên cho VB.NET cú pháp của cả hai phương pháp.

-1
for (int j = 0; j < TreeView1.CheckedNodes.Count; j++) 
    {  
     Response.Write(TreeView1.CheckedNodes[j].Value)); 
    } 
+2

Vui lòng thêm một số giải thích. –

0
   foreach (TreeNode node in TreeView1.Nodes) 
       { 
        if (node.Value == "8") 
        { 
         node.Checked = true; 
        } 
        foreach (TreeNode item1 in node.ChildNodes) 
        { 
         if (item1.Value == "8") 
         { 
          item1.Checked = true; 
         } 
        } 
       }    
+0

vui lòng giải thích mã của bạn một chút để giúp OP – Gogo

Các vấn đề liên quan