2016-03-31 9 views
2

私はdevexpressのtreelistにオブジェクトを追加しようとしています。しかし残念なことに、それは自動的にセルを埋めるのではなく、すべてのセルにオブジェクト名を表示します。Devexpress Treelistオブジェクトを追加するオブジェクト名のみを表示

Public Class TempItem 

Private m_name As String 
Private m_value As String 


Public Property Name() As String 
    Get 
     Return m_name 
    End Get 
    Set(value As String) 
     m_name = value 
    End Set 
End Property 
Public Property Value() As String 
    Get 
     Return m_value 
    End Get 
    Set(value As String) 
     m_value = value 
    End Set 
End Property 

エンドクラス

Private Function TempItem1() As List(Of TempItem) 
    Dim tmpList As New List(Of TempItem) 

    tmpList.Add(New TempItem("Feature", "0")) 
    tmpList.Add(New TempItem("Feature2", "1")) 


    Return tmpList 
End Function 

そして私はこのラインでオブジェクトを追加している:

tlEditor.Nodes.Add(TempItem1.ToArray) 

私はtreelistに2つの列を持っています。最初の列については、FieldNameをに設定しました。名前はで、2番目の列はフィールド名をに設定しました。値は、ツリーリストがTempItemクラスのプロパティの値を表示することを期待しています。この場合、トレネリストは次のように表示されます。

機能| 0 Feature2 | 1

代わりに、各セルにWindowsApplication1.TempItemと表示されます。 Like

WindowsApplication1.TempItem | WindowsApplication1.TempItem WindowsApplication1.TempItem | WindowsApplication1.TempItem

どうしたのですか?

答えて

1

あなたのリストは、クラスTempItemの新しいインスタンスを保持しています。私は代わりに文字列の配列を使用します。あなたはこのためにあなたのクラスを変更したり、単に(C#)と、以下の例のようにリストを設定することができます

public List<string[]> tmplist = new List<string[]>(); 
      string[] str1 = new string[] { "test1", "1" }; 
      string[] str2 = new string[] { "test2", "2" }; 
      tmplist.Add(str1); 
      tmplist.Add(str2); 

次に、リストを取り、リスト内の値でTreeNodeCollectionに取り込み機能作成:

public void CreateList(List<string[]> ars, TreeView tv) 
    { 
     foreach (var array in ars) 
     { 
      AddItems(array, 0, tv.Nodes); 
     } 
    } 

    void AddItems(string[] array, int index, TreeNodeCollection nodes) 
    { 
     if (index < array.Length) 
     { 
      var nextNode = AddValue(array[index], nodes); 
      AddItems(array, index + 1, nextNode.Nodes); 
     } 
    } 

    TreeNode AddValue(string value, TreeNodeCollection nodes) 
    { 
     var index = nodes.IndexOfKey(value); 
     if (index == -1) 
     { 
      var newNode = new TreeNode(value) { Name = value }; 
      nodes.Add(newNode); 
      return newNode; 
     } 
     return nodes[index]; 
    } 

そして、単にあなたのパラメータでCreateListを呼び出す:

CreateList(tmplist, treeView1); 
関連する問題