2015-04-20 106 views
0

我有一個TreeView每個項目都有不同的代碼。
用戶可以檢查5項並保存。然後我有一個treeView的節點代碼列表。
我想顯示在表單加載到用戶選中的項目。 但我的代碼不起作用。 任何人都可以幫助我嗎?設置檢查到treeView複選框

這是我的代碼:

private void chechTreeViewItems(List<int> remID) 
    { 
     foreach (System.Windows.Forms.TreeNode item in this.tvRemark.Nodes) 
     { 
      for (int i = 0; i < remID.Count; i++) 
      { 
       if (Convert.ToInt16(item.Tag)== remID[i]) 
       { 
        item.Checked = true; 
       } 
      } 

     } 

    } 

我覺得這個代碼無法跟蹤子節點。

+0

您是正在編寫WPF還是winform應用程序? – ANewGuyInTown

+0

它是winform應用程序 – Khodayar

+0

您的節點列表是扁平樹還是分層結構? – ANewGuyInTown

回答

0

如果只有一個根節點有幾個子節點(只有一個級別),那麼這裏就不需要遞歸了。只需在您的foreach循環中正確設置根節點:

private void chechTreeViewItems(List<int> remID) 
{ 
    foreach (System.Windows.Forms.TreeNode item in this.tvRemark.Nodes[0].Nodes) 
    { 
     for (int i = 0; i < remID.Count; i++) 
     { 
      if (Convert.ToInt16(item.Tag) == remID[i]) 
      { 
       item.Checked = true; 
      } 
     } 
    } 
} 
0

做這樣的事情:

private void ChechTreeViewItems(List<int> remId) 
    { 
     foreach (TreeNode item in this.Nodes) 
     { 
      if (remId.Contains(item.Tag)) 
      { 
       item.IsChecked = true; 
      } 

      if (item.Children != null) 
      { 
       this.CheckChildTreeNodes(item.Children, remId); 
      } 
     } 
    } 

並調用重新草書CheckChildTreeNodes方法來確保,子節點進行相應檢查。

private void CheckChildTreeNodes(IEnumerable<TreeNode> childnodes, ICollection<int> remId) 
    { 
     if (childnodes==null) 
     { 
      return; 
     } 
     foreach (TreeNode node in childnodes) 
     { 
      if (remId.Contains(node.Tag)) 
      { 
       node.IsChecked = true; 
      } 
      this.CheckChildTreeNodes(node.Children, remId); 
     } 
    } 
0

隨着你的幫助,我剛剛解決了我的問題。

private void chechTreeViewItems(List<int> remID) 
    { 
     for (int i = 0; i < remID.Count; i++) 
     { 

      foreach (System.Windows.Forms.TreeNode item in this.tvRemark.Nodes[0].Nodes) 
      { 

       if (Convert.ToInt16(item.Tag) == remID[i]) 
       { 
        item.Checked = true; 
       } 
      } 

     } 

    }