标签: treeview

如何获取.NET中TreeView中所有子节点的列表

我的WinForms .NET应用程序中有一个TreeView控件,它具有多级子节点,其子节点具有更多子节点,没有定义的深度.当用户选择任何父节点(不一定在根级别)时,如何获得该父节点所有节点的列表?

例如,我从这开始:

Dim nodes As List(Of String)

For Each childNodeLevel1 As TreeNode In parentNode.Nodes
    For Each childNodeLevel2 As TreeNode In childNodeLevel1.Nodes
        For Each childNodeLevel3 As TreeNode In childNodeLevel2.Nodes
            nodes.Add(childNodeLevel3.Text)
        Next
    Next
Next
Run Code Online (Sandbox Code Playgroud)

问题是这个循环深度是定义的,我只是将节点隐藏在三个级别.如果用户下次选择父节点时有七个级别怎么办?

.net vb.net treeview tree-nodes

16
推荐指数
4
解决办法
8万
查看次数

C#:如何避免双击事件发生TreeNode检查

所以我在C#windows窗体应用程序中有一个TreeView.我需要的是一些节点被"锁定",以便根据参数无法检查(或取消选中)它们.

我现在在做的是:

private void tv_local_BeforeCheck(object sender, TreeViewCancelEventArgs e) {
    TNode node = (TNode)e.Node;
    //if a part node, cancel the action.
    if (node.Type == "Part") {
        e.Cancel = true;     
    }
    //if a locked node, cancel the action
    if (node.Locked == true) {
        e.Cancel = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

只需单击该复选框,此代码就可以正常工作,但如果用户双击复选框,它仍会检查/取消选中.

我尝试过使用nodeMouseDoubleClick事件,但这并没有真正帮助,因为我无法取消事件...

有没有想法如何取消节点上的双击事件?...或其他什么?谢谢

c# treeview treenode double-click winforms

16
推荐指数
2
解决办法
1万
查看次数

清除TreeView

我正在从列表中加载一个TreeView,并且用户有一个删除项目的按钮,它从列表中删除它没问题,但是还有一个按钮在项目被删除后用列表更新TreeView,I将新项目添加到TreeView没有问题,但是在添加新项目之前有没有办法清除TreeView中的所有项目,所以我在TreeView中没有重复项?我试过在互联网上找其他地方寻找答案,但无法找到它,我尝试过简单的事情:

treeView1.Items.Clear();
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

对不起,我在评论中提到它,下面我很确定这条线确实清楚了,我只是没有在正确的地方使用它,谢谢你的答案.

c# wpf treeview

16
推荐指数
2
解决办法
5万
查看次数

可扩展树菜单列表

我想要实现的目标如下:

我希望有一个树视图列表,它将出现在页面的左侧,当一个Item展开时,它的项目是从数据库加载的(我可以做这个部分),所以基本上它会像这样:

+Category1
+Category2
+Category3
+Category4
Run Code Online (Sandbox Code Playgroud)

当用户点击时+,它将显示以下内容,直到数据从数据库中获取并添加到页面中:

+Category1
-Category2
    loading ...
+Category3
+Category4
Run Code Online (Sandbox Code Playgroud)

加载数据后,每个子类别将具有子子类别.

+Category1
-Category2
    +Sub-Cat1
    +Sub-Cat2
    +Sub-Cat3
    +Sub-Cat4
+Category3
+Category4
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

注意:我想知道如何放置(*或者>列表的任何其他符号,我相信这是CSS,但我根本不使用设计!!)

非常感谢您的帮助.

html css treeview listview

16
推荐指数
2
解决办法
5万
查看次数

使用MVVM获取选定的TreeViewItem

所以有人建议使用WPF TreeView,我想:"是的,这似乎是正确的方法." 现在,几个小时后,我简直无法相信使用这个控件有多困难.通过一系列研究,我能够使TreeView`控件正常工作,但我找不到"正确"的方法来将所选项目添加到视图模型中.我不需要从代码中设置所选项目; 我只需要我的视图模型就可以知道用户选择了哪个项目.

到目前为止,我有这个XAML,它本身不是很直观.这都在UserControl.Resources标记内:

<CollectionViewSource x:Key="cvs" Source="{Binding ApplicationServers}">
    <CollectionViewSource.GroupDescriptions>
        <PropertyGroupDescription PropertyName="DeploymentEnvironment"/>
    </CollectionViewSource.GroupDescriptions>
</CollectionViewSource>

<!-- Our leaf nodes (server names) -->
<DataTemplate x:Key="serverTemplate">
    <TextBlock Text="{Binding Path=Name}"/>
</DataTemplate>

<!-- Note: The Items path refers to the items in the CollectionViewSource group (our servers).
           The Name path refers to the group name. -->
<HierarchicalDataTemplate x:Key="categoryTemplate"
                          ItemsSource="{Binding Path=Items}"
                          ItemTemplate="{StaticResource serverTemplate}">
    <TextBlock Text="{Binding Path=Name}" FontWeight="Bold"/>
</HierarchicalDataTemplate>
Run Code Online (Sandbox Code Playgroud)

这是树视图:

<TreeView DockPanel.Dock="Bottom" ItemsSource="{Binding Source={StaticResource cvs}, Path=Groups}"
              ItemTemplate="{StaticResource categoryTemplate}">
            <Style TargetType="TreeViewItem">
                <Setter Property="IsSelected" Value="{Binding Path=IsSelected}"/>
            </Style>
        </TreeView> …
Run Code Online (Sandbox Code Playgroud)

wpf treeview selecteditem mvvm

16
推荐指数
2
解决办法
3万
查看次数

在树视图中添加子节点

我是C#的新手,没有任何编程经验.但我已经完成了C#基础知识.现在我想通过添加父节点和子节点来设计一个简单的树视图.

我想为第二个节点添加第二个孩子,我很困扰这里,不知道下一个是什么.

有任何想法吗?

这是代码:

    private void addParentNode_Click(object sender, EventArgs e)
    {
        string yourParentNode;
        yourParentNode = textBox1.Text.Trim();
        treeView2.Nodes.Add(yourParentNode);
    }

    private void addChildNode_Click(object sender, EventArgs e)
    {
        string yourChildNode;
        yourChildNode = textBox1.Text.Trim();
        treeView2.Nodes[0].Nodes.Add(yourChildNode);
    }
Run Code Online (Sandbox Code Playgroud)

对不起,我不清楚,我不确定我是否真的需要这个:

  //treeView1.BeginUpdate(); 
  //treeView1.Nodes.Clear();
Run Code Online (Sandbox Code Playgroud)

我正在尝试做的是添加父节点和子节点.在我的代码中,我可以添加几个父节点,但是如果我想添加一个子节点,它只会添加到第一个父节点中.我希望如果我添加一个子节点,我想将它添加到第二个父节点或第三个父节点.

在我的代码中,我只使用一个树视图,其名称为treeview2.这是截图

这就是我的最终代码的样子:在我放入else之前,如果我没有选择任何东西,我会收到错误.所以我这样做是因为如果没有选择它,它会将"子节点"添加到"默认节点"或(parent1节点).它似乎运作良好.多谢你们;-)

    //This is for adding a parent node
    private void addParentNode_Click(object sender, EventArgs e)
    {
        treeView2.BeginUpdate();

        string yourParentNode;
        yourParentNode = textBox1.Text.Trim();
        treeView2.Nodes.Add(yourParentNode);
        treeView2.EndUpdate();
    }

    //This is for adding child node
    private void addChildNode_Click(object sender, EventArgs e)
    {
        if (treeView2.SelectedNode != null)
        { …
Run Code Online (Sandbox Code Playgroud)

c# treeview

15
推荐指数
3
解决办法
18万
查看次数

我可以将WPF TreeView绑定到单个根节点吗?

假设我有一个二叉树,其中数据结构的根只是一个树节点.对于每个节点,孩子都可以通过Children酒店进入.这是我尝试过的.它TreeRoot是继承数据上下文的属性,但它是单个节点(不是集合).

<UserControl.Resources>
    <HierarchicalDataTemplate x:Key="TreeNodeTemplate" ItemsSource="{Binding Children}">
        <TextBlock Text="{Binding Name}" />
    </HierarchicalDataTemplate>
</UserControl.Resources>

<Grid>
    <TreeView ItemsSource="{Binding TreeRoot}" ItemTemplate="{StaticResource TreeNodeTemplate}" />
</Grid>
Run Code Online (Sandbox Code Playgroud)

.net wpf treeview xaml hierarchy

15
推荐指数
2
解决办法
6066
查看次数

Winforms treeview,递归检查子节点问题

以下代码直接来自Microsoft,网址http://msdn.microsoft.com/en-us/library/system.windows.forms.treeview.aftercheck%28VS.80%29.aspx.

  // Updates all child tree nodes recursively.
  private void CheckAllChildNodes(TreeNode treeNode, bool nodeChecked)
  {
   foreach (TreeNode node in treeNode.Nodes)
   {
    node.Checked = nodeChecked;
    if (node.Nodes.Count > 0)
    {
     // If the current node has child nodes, call the CheckAllChildsNodes method recursively.
     this.CheckAllChildNodes(node, nodeChecked);
    }
   }
  }

  // NOTE   This code can be added to the BeforeCheck event handler instead of the AfterCheck event.
  // After a tree node's Checked property is changed, all its child …
Run Code Online (Sandbox Code Playgroud)

checkbox treeview winforms

15
推荐指数
1
解决办法
9877
查看次数

WPF从TreeView中删除ScrollViewer

我想知道是否可以轻松关闭TreeView的ScrollViewer.

我有一个带网格的UserControl.其中一个Cell在Stackpanel中有一些TreeView.Control的高度根据TreeView的高度自动调整,因此不需要滚动条.

问题是:我在ListBox中有一堆具有自己的ScrollViewer,但是当我使用MouseWheel时,当你在TreeView上时滚动停止.

这是因为TreeView有自己的ScrollViewer来窃取MouseWheel.我知道这可能是通过覆盖控件模板来实现的,但我希望有一种更简单的方法.

c# wpf treeview scrollviewer

15
推荐指数
1
解决办法
6009
查看次数

用于单击Tkinter Treeview小部件项的命令?

我正在使用Tkinter创建GUI,GUI的主要部分是两个Treeview对象.当单击一个项目(即目录)时,我需要更改Treeview对象的内容.

如果Treeview项目是按钮,我只能设置command为适当的功能.但我找不到"on_click"为Treeview项创建行为的方法.

Treeview选项,方法等使我能够将命令绑定到特定项并执行该命令"on_click"

python treeview user-interface tkinter

15
推荐指数
2
解决办法
3万
查看次数