【问题标题】:C# WPF delete checked items in treeviewC# WPF 在树视图中删除选中的项目
【发布时间】:2011-04-14 09:37:04
【问题描述】:

如果我有这样的树视图:

书籍
-->项目
光盘
-->物品

每个项目都包含一个复选框,我怎样才能删除所有选中的复选框。

注意:我不使用树节点。

我有一个包含 3 个树视图项目(即书籍、cd 和 dvd)的树视图。我动态地创建节点:

TreeViewItem newChild = new TreeViewItem();

 newChild.Header = cbox;

如果检查了例如 5 个树视图项(删除),那么我想删除它们。

【问题讨论】:

  • 这是 WPF 还是 WinForm ?如果不是 TreeNode,那么您在使用什么。请详细说明。我们还没有通灵(还)。
  • 如果不使用树节点,如何将对象添加到树视图?这个问题没有多大意义;请编辑以添加更多信息。
  • 那么,您实际上只是想要一个算法来运行一棵树并删除节点?
  • 是的就是被勾选的节点,每一项前都有一个checkbox

标签: c# wpf


【解决方案1】:

我认为你需要这样的东西:

void DeleteSelectedItems(TreeView root)
{
    var todelete = List<TreeViewItem>();
    GetSelectedItems(root.Items, todelete);
    foreach(var it in todelete)
    {
        var parent = it.Parent;
        parent.Items.Remove(it);
    }
}

void GetSelectedItems(ItemsCollection tree, List<TreeViewItem> todelete)
{
    foreach(var it in tree)
    {
        if (((it as TreeViewItem).Header as CheckBox).Checked)
            todelete.Add(it);
        else
            GetSelectedItems(it.Items, todelete);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多