मैं एक int सूची को पुनरावृत्त करके TreeView. चयनित नोड सेट करना चाहता हूं लेकिन मैं यह नहीं समझ सकता कि बच्चे नोड्स को कैसे सेट किया जाए। मेरे पास मेरे कस्टम नियंत्रण में निम्न कोड है:

 private void SetSelectedNode()
    {
        if (MySelectedNodeIndexes == null) return;

        for (int i = 0; i < MySelectedNodeIndexes.Count; i++)
        {
            this.SelectedNode = this.Nodes[MySelectedNodeIndexes[i]];

        }            
    }

यह केवल नोड सेट करता है लेकिन पहले पुनरावृत्ति पर। लेकिन दूसरे पुनरावृत्ति को इसे सेट करना चाहिए। SelectedNode.Nodes [MyselctedNodesIndexes में पहली प्रविष्टि]। SelectedNode। और इसी तरह।

यदि MySelectedNodeIndexes में {2,4,7,1} शामिल हैं, तो मैं चाहता हूं कि चयनित नोड्स हों: this.Nodes[2].nodes[4].nodes[7].nodes[1];

मुझे नहीं पता कि यह कैसे करना है? मदद के लिए अग्रिम धन्यवाद।

2
Jan-WIllem 25 फरवरी 2019, 23:09

1 उत्तर

सबसे बढ़िया उत्तर

आप इनपुट इंडेक्स सूची पर नोड आधार खोजने के लिए लूप के लिए उपयोग कर सकते हैं। उदाहरण के लिए:

TreeNode GetNodeByIndexPath(TreeView treeView, int[] indexPath)
{
    var nodes = treeView.Nodes;
    TreeNode node = null;
    for (int i = 0; i < indexPath.Length; i++)
    {
        node = nodes[indexPath[i]];
        nodes = node.Nodes;
    }
    return node;
}

उदाहरण

var path = new int[] { 1, 1, 1 };
treeView1.SelectedNode = GetNodeByIndexPath(treeView1, path);
2
LarsTech 25 फरवरी 2019, 23:39