C# 单击treeview的子节点获取提示
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 单击treeview的子节点获取提示相关的知识,希望对你有一定的参考价值。
怎么能点击treeview的子节点获取提示(效果和鼠标移动到某个按钮获得提示信息(按钮有个属性是ToolTip是提示信息的)效果一样(不是弹出消息框出来提示的那种))
private void trvStudentGroup_AfterSelect(object sender, TreeViewEventArgs e)
string name = e.Node.Text;//获取数据库字段的studentname
string ID = e.Node.Name;//获取数据库字段的studentID
我运行程序调试以上代码可以读取到我想要的值,但是单击子节点的时候不知道怎么能提示你点击的是哪个ID哪个name?
期待某位大侠的出现!小弟感激不尽,解决了追加分数
二楼的兄弟,我按照你说的做了,但是有两个问题不知道要怎么办?
1。可以提示信息但是拖动节点数据的时候没有跟着我拖动的轨迹走,它只停留在原地?
需详细说明,最好附上代码和注释!!
具体看下代码
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
toolTip1.Show(e.Node.Text,treeView1,e.X,e.Y);
参考技术A 你把TreeView控件的ShowNodeToolTips属性设置为True,或者用程序控制下,就能实现了吧 参考技术B 在你触发拖动事件的时候关闭toolTip就行了
在 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;
它已经完成了。
【讨论】:
天才!这个工作的伙伴!也非常感谢您花时间设置演示。凯尔有一个美好的一天!以上是关于C# 单击treeview的子节点获取提示的主要内容,如果未能解决你的问题,请参考以下文章
c# treeview控件 点击根节点后展开相应的子节点,如何实现