添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

最近在做一个交换机管理的项目,有一个交换机的树,做树的搜索的时候 展开节点居然有点难,自己记录下来 ,以后用的到的时候可以看一下。

展开代码如下,其中

SwitchTree是treeview空间的名称,TreeNode 是绑定在树上的数据类的名称,请注意
private void ExpendTree(TreeNode node)
            SwitchTree.UpdateLayout();
            for (int i = 0; i < SwitchTree.Items.Count; i++)
                TreeNode findNd = SwitchTree.Items[i] as TreeNode;
                TreeViewItem ti = SwitchTree.ItemContainerGenerator.ContainerFromIndex(i) as TreeViewItem;
                if (findNd == node && ti != null)
                    ti.IsExpanded = true;
                    ti.IsSelected = true;
                    if (ti.ItemContainerGenerator.Status != GeneratorStatus.ContainersGenerated)
                        ti.UpdateLayout();
                    //展开
                    EependTreeByNode(ti);
                    break;
                    if (ti != null)
                       TreeViewItem treeViewItem= RecurFindeNode(node, ti);
                        if (treeViewItem == null)
                            ti.IsExpanded = false;
                            continue;
                        //展开
                        EependTreeByNode(treeViewItem);
                        break;
            //EependTreeByNode(node);
        private TreeViewItem RecurFindeNode(TreeNode n, TreeViewItem items)
            TreeViewItem tv = null;
            if (n != null && items != null && items.HasItems)
                items.IsExpanded = true;
                foreach (var item in items.Items)
                    var node = item as TreeNode;
                    if (node == null || (node.nodes!=null&&!node.nodes.Any()))
                        continue;
                    if (items.ItemContainerGenerator.Status != GeneratorStatus.ContainersGenerated)
                        items.UpdateLayout();
                    TreeViewItem m_item = items.ItemContainerGenerator.ContainerFromItem(item) as TreeViewItem;
                    if (n == node && m_item != null)
                        //EependTreeByNode(m_item);
                        tv = m_item;
                        TreeViewItem treeNode = RecurFindeNode(n, m_item);
                        if (treeNode != null)
                            tv = treeNode;
                            break;
                            //items.IsExpanded = false;
            return tv;
        private void EependTreeByNode(TreeViewItem contenier)
            if (contenier != null)
                //if (contenier.HasItems)
                    contenier.IsExpanded = true;
                    contenier.IsSelected = true;
                //else
                //    TreeViewItem parent = (TreeViewItem)contenier.Parent;
                //    if (parent != null)
                //        parent.IsExpanded = true;
                //        parent.IsSelected = true;
                if (contenier.ItemContainerGenerator.Status != GeneratorStatus.ContainersGenerated)
                    contenier.UpdateLayout();

转载于:https://www.cnblogs.com/wuyaxiansheng/p/11130939.html

最近在做一个交换机管理的项目,有一个交换机的树,做树的搜索的时候 展开节点居然有点难,自己记录下来 ,以后用的到的时候可以看一下。展开代码如下,其中SwitchTree是treeview空间的名称,TreeNode 是绑定在树上的数据类的名称,请注意private void ExpendTree(TreeNode node) {         ...
解决问题的思路是,得到从树的根节点到特定节点的路线,并打开所有父节点。但是曲折的地方就是如何得到下一级的子节点,也就是如何从Items集合中取得对应的TreeViewItem并set IsExpanded = true。   TreeView的Items集合和TreeViewItem的Items集合都是从ItemsControl父类继承过来的,在这个集合中,其实可能存放两种对象。其一是TreeV
var key = $("#txtQuery").val(); var searchElement = $("a:contains('" + key + "')"); if (searchElement.length == 0) { alert... 问题描述: 提示:QTreeView 使用折叠功能expandAll是可以展开所有的节点,但是在做项目的时候需要展开指定位置的节点,这时候尝试使用Expand方法: index函数: QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; 使用方法: m_treeView = new QTreeView();
今天在工作中遇到TreeView 节点展开,所做的项目中有一个根节点,下面有几个子节点,几个子节点分别又有子节点.....总共有4层吧,所有节点加载完毕后 想展开所有的节点,用了   this.treeview1.expandAll() 方法无效 后来经过多次尝试才发现 expandAll ()方法只适合 所有 子节点都属于一个根节点的情况,如果子节点还有节点,这个方法就不适用,如果要展开所有
要在 WPF TreeView 中删除节点,你可以按照以下步骤进行操作: 1. 首先,确定你要删除的节点。可以通过遍历 TreeView 的 Items 属性来查找节点。如果你知道节点的索引或者 Tag 值,可以使用 FindItem 方法来定位节点。 2. 一旦找到要删除的节点,可以使用 Items.Remove 或者 Items.RemoveAt 方法将节点TreeView 中移除。如果你想删除所有子节点,可以使用 Items.Clear 方法。 3. 最后,记得更新 TreeView 的显示,可以通过调用 UpdateLayout 方法来实现。 下面是一个简单的示例代码,演示了如何删除 TreeView 中选中的节点: ```csharp private void RemoveSelectedNode() // 获取选中的节点 var selectedNode = myTreeView.SelectedItem as TreeViewItem; if (selectedNode == null) return; // 获取选中节点的父节点 var parentNode = VisualTreeHelper.GetParent(selectedNode) as TreeViewItem; if (parentNode == null) return; // 从父节点中移除选中节点 parentNode.Items.Remove(selectedNode); // 更新 TreeView 的显示 myTreeView.UpdateLayout(); 请注意,这只是一个基本示例,具体的实现可能会根据你的需求有所不同。希望这能帮助到你!如果还有其他问题,请随时提问。