我正在尝试将对象添加到devexpress的树形列表中。但是遗憾的是,它不会自动填充单元格,而是在每个单元格中显示对象名称。

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)


我的树形列表中有两列。对于第一列,我将FieldName设置为Name,第二列将fieldname设置为Value,期望树形列表显示TempItem类中属性的值。在这种情况下,树形列表应显示:

功能| 0
Feature2 | 1个

但相反,它在每个单元格中都显示WindowsApplication1.TempItem。喜欢

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

我做错了什么?

最佳答案

您的列表包含类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);

关于c# - Devexpress Treelist添加对象仅显示对象名称,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36341800/

10-17 01:43