2011-10-21 13 views
1

TreeNodeをキーで作成しようとしていますが、キーとテキストを取るTreeNodeのコンストラクタはありません。私は次の解決策が見つかりました:Linq式のキーを持つTreeNodesを作成します

TreeNode tn = new TreeNode("text node"); 
tn.Name = "keyNode"; 

 

treeView.Nodes.Add("keyNode", "text node"); 

をしかし、私はLINQクエリで私のtreeViewに新しいTreeNodesを追加しようとしているとして、これらの方法は、私に合いません。

treeView.Nodes.AddRange(
    myListOfObject.Select(x => new TreeNode(x.somePropertyForKey, 
              x.somePropertyForText)). 
        ToArray<TreeNodes>()); 

アムは、私がTreeNodesを作成するためにforeachループを使用して立ち往生するか、このワンライン - を行う方法を参照してください:ここでは


は、私が理想的にやりたいものですish

答えて

7

は、新しい初期化構文はそのような何かであるべき

TreeNode tn = new TreeNode("text node") {Name = "keynode"} ; 
+2

+1。実際には[オブジェクト初期化子](http://msdn.microsoft.com/en-us/library/bb384062.aspx)と呼ばれています。 – Ani

+0

私はそれについて知らなかった。完璧! – Otiel

+0

私はこの結果を見たいと思っています。最初に間違った名前 "tree node"を割り当てて、 "keynode"に名前を上書きするだけで、子ノードはまったく追加しないようです。 –

1
treeView.Nodes.AddRange(myListOfObject.Select(new TreeNode 
       { 
        Name = "keyNode", 
        TreeNode = new TreeNode[]{new TreeNode{Name="text node"}}} 
       }); 

何のためにあるのか厥。 (括弧や構文を確認してください)

あなたはそれが動作しないと、データベースをヒットされていない場合は、あなただけの次の操作を行うことができ、BTW TreeNode(String, TreeNode[])

このコンストラクタを使用するとよいでしょう:

treeView.Nodes.AddRange(myListOfObject.Select(new TreeNode 
       (
        "keyNode", 
        new TreeNode[]{new TreeNode{Name="text node"}}} 
       ); 
関連する問題