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。可以提示信息但是拖动节点数据的时候没有跟着我拖动的轨迹走,它只停留在原地?
需详细说明,最好附上代码和注释!!

treeview有个NodeMouseClick事件 你在界面上拖一个toolTip控件 在click事件里设置控件显示
具体看下代码

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 知道节点name 如何选中节点!

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

c# treeview控件 点击根节点后展开相应的子节点,如何实现

C#里treeview如何向指定NAME节点添加子节点?

C#中如何实现TreeView控件选中根结点相应的子节点也选中,同时将信息相应的显示到DataGridView控件中。

C# Winform如何实现单击treeview子节点“设置员工信息” 打开窗体Form1