2016-06-14 76 views
-5

我有一個樹狀結構,有很多節點和很多子節點和下降節點。 我想通過點擊treeview找到選中的節點。 後來我寫了下面的代碼:獲取樹視圖的所有檢查節點

internal static IEnumerable<TreeNode> Descendants(this TreeNodeCollection tNode) 
{ 
    foreach (var node in tNode.OfType<TreeNode>()) 
    { 
     yield return node; 

     foreach (var child in node.Nodes.Descendants()) 
     { 
      yield return child; 
     } 
    } 
} 

var selectedNodes = treeView1.Nodes.Descendants() 
        .Where(n => n.Checked) 
        .Select(n => n.Text) 
        .ToList(); 

但我有以下錯誤:

error CS1106: Extension method must be defined in a non-generic static class

通過我應該指出,這個錯誤是public partial class Form1 : Form的方式。

您能否讓我知道問題在哪裏?

+3

它明確提到,你的'Extension'方法必須在'static'類 – Chaitanya

+0

@Chaitanya你的意思是Form1:Form? – Saber

+0

我必須猜測,因爲你沒有在你的問題中指定。嘗試在一個單獨的類中實現你的'擴展'方法。也許它可以解決您的問題 – Chaitanya

回答

0

將您的擴展方法寫入SEPARATE靜態類(未嵌套)。將另一個文件添加到您的項目中,並在其中創建一個靜態類,其中包含靜態擴展方法。

在你的問題中的錯誤(和你試圖將它添加到一個嵌套類得到了一個)應該是不言自明