TreeView 的派生类: TreeViewEx 实现 NodeShowToolTip、NodeDoubleClick 事件

// playyuer@Microshaoft.com invent
//一个 TreeView 的派生类: TreeViewEx 实现 NodeShowToolTip、NodeDoubleClick 事件
//1.实现了 NodeShowToolTip 事件,结合键盘 Ctrl 键显示及设置 ToolTipText
//2.实现了 NodeDoubleClick 事件,可在调用中只响应"叶子"节点
//3.点击 TreeView 空白处不选中任何节点
//Class1.cs
namespace Microshaoft
{
 using System;
 public class TreeViewEx : System.Windows.Forms.TreeView
 {
  public delegate void TreeViewExEventHandler(object sender,TreeViewExEventArgs e);
  public event TreeViewExEventHandler NodeDoubleClick;
  public event TreeViewExEventHandler NodeShowToolTip;

  private void OnNodeDoubleClick(System.Windows.Forms.TreeNode xx)
  {
   if(this.NodeDoubleClick != null)
   {
    this.NodeDoubleClick(this,new TreeViewExEventArgs(xx));
   }
  }
  private void OnNodeShowToolTip(System.Windows.Forms.TreeNode xx, System.Windows.Forms.ToolTip yy)
  {
   if(this.NodeShowToolTip != null)
   {
    if ((xx != null) && (this.toolTip !=null))
    {
     this.NodeShowToolTip(this,new TreeViewExEventArgs(xx,this.toolTip));
    }
   }
  }
  protected override void OnDoubleClick(System.EventArgs e)
  {
   if (this.SelectedNode != null)
   {
    this.OnNodeDoubleClick(this.SelectedNode);
   }
   base.OnDoubleClick(e);
  }
  private System.Windows.Forms.ToolTip toolTip;
  public TreeViewEx()
  {
   toolTip = new System.Windows.Forms.ToolTip();
   this.toolTip.InitialDelay = 300;
   this.toolTip.ReshowDelay = 0;
  }
  protected override void OnClick (System.EventArgs e)
  {
   if (this.GetNodeAt(System.Windows.Forms.TreeView.MousePosition.X,System.Windows.Forms.TreeView.MousePosition.Y) == null)
   {

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在QML中可以使用TreeView来展示树形结构的数据,下面是一个简单的TreeView实现的示例代码: ``` import QtQuick 2.0 import QtQuick.Controls 2.0 TreeView { id: treeView anchors.fill: parent TableViewColumn { role: "name" title: "Name" width: 200 } ListModel { id: treeModel ListElement { name: "Node 1" } ListElement { name: "Node 2" } ListElement { name: "Node 3" } ListElement { name: "Node 4" } ListElement { name: "Node 5" } ListElement { name: "Node 6" } ListElement { name: "Node 7" } ListElement { name: "Node 8" } ListElement { name: "Node 9" } ListElement { name: "Node 10" } } model: TreeModel { id: root Node { name: "Root" Node { name: "Child 1" Node { name: "Grandchild 1" } Node { name: "Grandchild 2" } } Node { name: "Child 2" } Node { name: "Child 3" Node { name: "Grandchild 3" } } } } delegate: TreeViewButtonDelegate { text: model.name onClicked: { if (treeView.isExpanded(index)) { treeView.collapse(index) } else { treeView.expand(index) } } } } ``` 在这个例子中,我们使用TreeView来展示一个树形结构的数据。树的根节点是一个Node对象,每个Node对象都有一个name属性和一个children属性,children属性是一个包含子节点的ListModel。在TreeView的model中,我们创建了一个TreeModel对象作为根节点,并指定了根节点的子节点。我们还定义了一个TreeViewButtonDelegate来作为每个节点的代理,这个代理展示了节点的name属性,并实现了一个点击事件,在点击时可以展开或折叠节点。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

playyuer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值