为啥vb6.0 treeview控件添加的父节点可以显示,但是子节点显示不出来?急求答案

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥vb6.0 treeview控件添加的父节点可以显示,但是子节点显示不出来?急求答案相关的知识,希望对你有一定的参考价值。

代码如下:
Private Sub Form_Load()
TreeView1.LineStyle = tvwTreeLines
TreeView1.ImageList = ImageList1
TreeView1.Style = tvwTreelinesPlusMinusPictureText
Set nodx = TreeView1.Nodes.Add(, , "蒲子明", "蒲子明", 1)
Set nodx = TreeView1.Nodes.Add("蒲子明", tvwChild, "child01", "收件箱", 3)
Set nodx = TreeView1.Nodes.Add("蒲子明", tvwChild, "child02", "发件箱", 3)
End Sub

参考技术A TreeView1.Nodes.Item(1).Expanded = True本回答被提问者采纳

在 WPF C# TreeView 中获取子节点的父节点

【中文标题】在 WPF C# TreeView 中获取子节点的父节点【英文标题】:Get the Parent node of a Child in WPF C# TreeView 【发布时间】:2015-05-14 08:01:55 【问题描述】:

我知道使用 WPF 在 C# 中编程与传统的 C# 程序不同,因此大多数在线资料都没有说明我需要什么。

我的 WPF 窗口中有一个 TreeView 控件,其中有父节点和子节点。我想将它们存储在节点类型(id、名称、父级)的列表中。

我使用这个获得了所选项目/节点的名称:

private void TreeViewItem_OnItemSelected(object sender, RoutedEventArgs e)

    TreeViewItem item = treeView.SelectedItem as TreeViewItem;
    nameTxt.Text = item.Header.ToString();

我尝试在子节点之前使用它获取父节点:

TreeViewItem item = treeView.SelectedItem as TreeViewItem;
nameTxt.Text = item.Parent.ToString();

但是,这会返回根父级 (A) 而不是子级的父级(即 2)。

我应该进行哪些更改才能获得孩子的直接父母而不是根父母? :)

编辑:这是 XAML

<TreeView Name="treeView" HorizontalAlignment="Left" Height="564" Margin="10,68,0,0" VerticalAlignment="Top" Width="363">
     <TreeViewItem TreeViewItem.Selected="TreeViewItem_OnItemSelected"  Header="A" IsExpanded="True" Height="554" FontSize="18">
                <TreeViewItem Header="1" />
                <TreeViewItem Header="2" />
     </TreeViewItem>
</TreeView>

【问题讨论】:

这很不寻常,它是由 Parent 属性返回的节点的父节点。您能否显示您提供的代码的扩展版本,也许问题出在其他地方 item.Parent 返回A 时,SelectedItem 是什么? @Chris 这是完整的代码,伙计。我只是将所选项目和父项打印到文本框。它只是继续映射到 A 的根节点。但是,选定的项目显示当前选定的项目,只是父节点继续映射到根节点而不是之前的父节点 @SriramSakthivel 参考上面的评论,好先生! :) 您的 Xaml 没有反映您在图像中显示的 UI,您只有两个父节点为 A,因此您得到 A。我也无法重现该问题。发布完整代码以重现问题以获得帮助。顺便说一句,我建议您使用数据绑定而不是参考this。 【参考方案1】:

创建了一个小例子来演示你的问题

MainWindow.xaml

 <TreeView Name="tree">
    <TreeView>
        <TreeViewItem Header="North America" Selected="TreeViewItem_OnItemSelected">
            <TreeViewItem Header="USA">
                <TreeViewItem Header="New York"/>
                <TreeViewItem Header="Las Vegas"/>
                <TreeViewItem Header="Washington"/>
            </TreeViewItem>
            <TreeViewItem Header="Canada">
                <TreeViewItem Header="Toronto"/>
                <TreeViewItem Header="Quebec"/>
                <TreeViewItem Header="Montreal"/>
            </TreeViewItem>
            <TreeViewItem Header="Mexico"></TreeViewItem>
        </TreeViewItem>
    </TreeView>
</TreeView>

在代码后面,即 MainWindow.xaml.cs

 private void TreeViewItem_OnItemSelected(object sender, RoutedEventArgs e)
    
        TreeViewItem item = e.OriginalSource as TreeViewItem;
        if (item != null)
        
            ItemsControl parent = GetSelectedTreeViewItemParent(item);

            TreeViewItem treeitem = parent as TreeViewItem;
            string MyValue= treeitem .Header.ToString();//Gets you the immediate parent
        
    
    public ItemsControl GetSelectedTreeViewItemParent(TreeViewItem item)
    
        DependencyObject parent = VisualTreeHelper.GetParent(item);
        while (!(parent is TreeViewItem || parent is TreeView))
        
            parent = VisualTreeHelper.GetParent(parent);
        

        return parent as ItemsControl;
    

它已经完成了。

【讨论】:

天才!这个工作的伙伴!也非常感谢您花时间设置演示。凯尔有一个美好的一天!

以上是关于为啥vb6.0 treeview控件添加的父节点可以显示,但是子节点显示不出来?急求答案的主要内容,如果未能解决你的问题,请参考以下文章

如何在窗体初始化的时候就展开所有TreeView控件的所有节点

c#的winform TreeView控件中,展开不同的节点,右边显示不同的内容,该怎么做啊,请帮帮我吧,谢谢~

C#动态给treeview控件添加节点和子节点

TreeView控制消息

asp.net中的treeview控件为啥只能选中同一级的第一个节点?

选中树形图treeview的一个节点,怎么得到它的父节点