标签: treeview

在树视图中添加子节点

我是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万
查看次数

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
查看次数

WPF中的多列树视图

任何人都知道我在哪里可以像WPF中的多列树视图一样获得控件?

wpf treeview wpf-controls

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

.NETView中的TreeView双击行为#C#

我有一个常规的.NET Windows窗体树视图控件.节点设置如下:

- -儿童

- -儿童

如果我双击折叠的组节点,它会展开(如您所料)并触发NodeMouseDoubleClick事件,如果所选节点不是组节点,我的代码会执行某些操作.

当组位于树视图的底部附近时会出现问题,因此当我双击组节点时,它将需要树视图垂直扩展以使子节点适合视图.在这种情况下,如果我双击组节点,当它扩展并调整树视图时,我的鼠标光标位于子节点上(它必须将所有内容都推到一起),这会导致NodeMouseDoubleClick认为子节点被选中,这会导致非常奇怪的行为.

我怎么能绕过这个?我不应该使用NodeMouseDoubleClick或..?

我看到它也在反馈报告中解释了扩展/折叠导致滚动更改后TreeView DoubleClick事件的问题.

.net c# treeview double-click winforms

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

从DataTable填充WinForms TreeView

我有一个WinForm TreeView控件,显示CaseNotes的Parent Child关系(我知道这对大多数人来说没有任何意义,但它可以帮助我查看答案).

我有一个我需要显示的CaseNotes的DataTable.父/子被定义为:如果行具有ParentNoteID,则它是该注释的childNode,否则它是rootNode.它也可以是父笔记(但不是rootNode),如果另一行有它的ID,因为它是ParentNoteID.

为了使事情变得复杂(可能是简化),我有以下工作(大多数)代码,它们交替地为节点着色.我手动为树视图创建了一个静态集合,它可以非常正确地为它们着色.现在我需要从我的DataTable动态填充节点.

既然我已经逐个节点地通过树视图,我不应该以某种方式将数据附加到这个过程中吗?也许我需要先构建节点,然后将颜色作为单独的例程,但递归方法仍然适用,对吗?

假设我想为每个节点显示CaseNoteID.这是在DataTable中返回的,并且是唯一的.

foreach (TreeNode rootNode in tvwCaseNotes.Nodes)
        {
            ColorNodes(rootNode, Color.MediumVioletRed, Color.DodgerBlue);

        }
protected void ColorNodes(TreeNode root, Color firstColor, Color secondColor)
    {
        root.ForeColor = root.Index % 2 == 0 ? firstColor : secondColor;

        foreach (TreeNode childNode in root.Nodes)
        {
            Color nextColor = childNode.ForeColor = childNode.Index % 2 == 0 ? firstColor : secondColor;

            if (childNode.Nodes.Count > 0)
            {
                // alternate colors for the next node
                if (nextColor == firstColor)
                    ColorNodes(childNode, secondColor, firstColor);
                else
                    ColorNodes(childNode, firstColor, secondColor); …
Run Code Online (Sandbox Code Playgroud)

.net c# treeview recursion winforms

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

树视图中任何项目的OnExpanded事件

我希望在我的树视图中获得一个树形图扩展的事件.

这样做的原因,有点无关原来的问题:我创建密切相关的XML文件树树,但我允许包括XML元素这样的树可以在多个文件中去.我想在扩展时在treeview中设置treeviewitems的itemssource属性.

c# data-binding wpf treeview

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

如何右键单击以在树视图控件中选择节点

为什么我右键单击树视图中的节点,焦点移动到此节点,然后立即返回到先前选择的节点.有什么方法可以允许右键单击选择节点吗?

.net vb.net treeview .net-4.0 winforms

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

如何重新加载/刷新/重新启动DynaTree?

当我做以下

$('#tree').dynatree("option","initAjax",{url:"http://google.com"});
Run Code Online (Sandbox Code Playgroud)

我希望dynatree忘记当前的树数据,并使用来自指定url的新数据重新加载.但我发现默认情况下不会这样做.

谢谢.

javascript treeview jquery dynatree jquery-dynatree

14
推荐指数
4
解决办法
2万
查看次数

TreeView,HierarchicalDataTemplate和递归数据

对于我的treeview,我有两个不同的类提供ItemsSource.

public class TreeViewModel : ViewModelBase
{
    public ObservableCollection<NodeViewModel> Items { get; set; }
}

public class NodeViewModel : ViewModelBase
{
    public string Id { get; set; }
    public string Name { get; set; }
    public ObservableCollection<NodeViewModel> Children { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在我希望我的TreeView在TreeViewModel中显示Items并显示NodeViewModel提供的分层数据.

这是我的XAML

<Window x:Class="TreeViewMasterDetails.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:TreeViewMasterDetails" 
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <TreeView Height="Auto" 
                  HorizontalAlignment="Stretch" 
                  Margin="10" 
                  VerticalAlignment="Stretch" 
                  Width="Auto">
            <TreeView.Resources>
                <HierarchicalDataTemplate DataType="x:Type local:TreeViewModel" ItemsSource="{Binding Items}">
                    <TextBlock Text="{Binding Path=Name}"></TextBlock>
                </HierarchicalDataTemplate>
                <HierarchicalDataTemplate DataType="x:Type local:NodeViewModel" ItemsSource="{Binding Children}">
                    <TextBlock Text="{Binding Name}"></TextBlock>
                </HierarchicalDataTemplate>
            </TreeView.Resources> …
Run Code Online (Sandbox Code Playgroud)

c# wpf treeview hierarchicaldatatemplate

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