2016-11-14 23 views
0

我想要删除在comboBox中选择的子节点。如何删除在ComboBox中选择的节点?

private void AccountsSetup_Load(object sender, EventArgs e) 
{ 
    // Populating parent nodes with the items in Bank ComboBox that is First. 
    string[] items = new string[BankList.Items.Count]; 

    for (int i = 0; i < BankList.Items.Count; i++) 
    { 
     items[i] = BankList.Items[i].ToString(); 
     //node.Nodes.Add(items[i]); 
     treeView1.Nodes.Add(items[i]); 
    } 
} 

enter image description here

尽管这是在账户组合框写作查找节点,它没有找到,显然不会删除。

// If the Account No matches to Account node, it should delete. 
TreeNode[] nodes = treeView1.Nodes.Find(AccountsComboBox2.Text, true); 

foreach (TreeNode oldnode in nodes) 
{ 
    treeView1.Nodes.Remove(oldnode); 
} 

我的附加科目代码,也许是我在这里做得不对:

treeView1.Nodes[BankList.SelectedIndex].Nodes.Add(AccountNotextBox1.Text); 
     treeView1.ExpandAll(); 

添加的帐户去AccountComboBox2。

所以然后我选择AccountComboBox2.Text并匹配如果节点存在于treeview然后删除它。

enter image description here

+0

添加新节点

TreeNode newNode = new TreeNode(AccountNotextBox1.Text); //this is tag newNode.Tag = AccountsComboBox2.Text; treeView1.Nodes[BankList.SelectedIndex].Nodes.Add(newNode); 

并查找下一个节点,我不看到你试图找到所选项目。另外,当您迭代它时,您无法从集合中删除项目。 – krillgar

+0

当我按下“删除帐户”按钮,它遍历treeView1.nodes,并找到帐户号码“123123123是否存在,如果存在,它应该删除该节点。 – Patrick

+0

我不能删除项目,而迭代它?那么我有选择要删除的节点?如果我不想让用户选择要删除的节点,因为当创建帐户时它会进入comboBox,并且当用户选择要删除的comboBox帐户时,所有东西都可以正常工作。用户可以知道他们在哪里银行帐户 – Patrick

回答

1

尝试添加Cast<TreeNode>和使用Where就像当你创建新的节点this.But第一添加标签。

首先编辑你的功能,通过Tag

TreeNode[] treeNodes = treeView1.Nodes 
           .Cast<TreeNode>() 
           .Where(r => r.Tag == AccountsComboBox2.Text) 
           .ToArray(); 

foreach (TreeNode oldnode in treeNodes) 
{ 
    if (oldnode.Parent == null) 
    { 
     treeView1.Nodes.Remove(oldnode); 
    } 
    else 
    { 
     oldnode.Parent.Nodes.Remove(oldnode); 
    } 
} 
+0

对不起,这不起作用,这看起来非常好的代码寿。 – Patrick

+0

@Patrick尝试检查你尝试删除有父母的节点或没有,因为我显示。 –

+0

好吧,我正在尝试这段代码。 – Patrick