为啥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
在 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控件中,展开不同的节点,右边显示不同的内容,该怎么做啊,请帮帮我吧,谢谢~