- 热门文章:
- · 我自己写的自定义Web的上传控件
- · 增加判断文字长度,汉字算2个
- · 客户端脚本对中文的验证(javascript)
- · 献丑了,我的asp.net网站开发经验,欢迎参加讨论。
- · 笑望人生,关于IHttpHandler处理图片
- · HTML在线编辑器--服务器控件~~.NET实现~~
- · How to Share Session State Between Classic ASP and ASP.NET(1)
- · How to Share Session State Between Classic ASP and ASP.NET(2)
- · 关于验证控件,希望对和我原来有疑惑的朋友有帮助(刚找的资料,结合猫猫的)
- · 上次的一个问题我打了微软的求助电话,他们也没有办法!
- · [技巧]DataGird的hyper column的url field 绑定两个字段
- · ms--help
TreeView 派生类: TreeViewEx 实现 NodeShowToolTip、NodeDoubleClick 事件
//一个 TreeView 的派生类: TreeViewEx 实现 NodeShowToolTip、NodeDoubleClick 事件
//1.实现了 NodeShowToolTip 事件,结合键盘 Ctrl 键显示及设置 ToolTipText
//2.实现了 NodeDoubleClick 事件,可在调用中只响应"叶子"节点
//3.点击 TreeView 空白处不选中任何节点
//Class1.cs
using System;
public class TreeViewEx : System.Windows.Forms.TreeView
{
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)
this.SelectedNode = null;
base.OnClick(e);
}
protected override void OnMouseDown (System.Windows.Forms.MouseEventArgs e)
{
if (this.GetNodeAt(e.X,e.Y) == null)
this.SelectedNode = null;
base.OnMouseDown(e);
}
private System.Windows.Forms.TreeNode LastTreeNode;
protected override void OnMouseMove (System.Windows.Forms.MouseEventArgs e)
{
this.Cursor = System.Windows.Forms.Cursors.Default ;
System.Windows.Forms.TreeNode treeNode;
treeNode = this.GetNodeAt(e.X,e.Y) ;
if(treeNode != null)
{
if( (System.Windows.Forms.Control.ModifierKeys & System.Windows.Forms.Keys.Control) != 0)
{
this.Cursor = System.Windows.Forms.Cursors.Hand ;
if(treeNode != LastTreeNode | LastTreeNode ==null )
{
LastTreeNode = treeNode;
this.toolTip.Active = false;
this.OnNodeShowToolTip(treeNode,this.toolTip);
this.toolTip.Active = true;
}
}
else
{
this.Cursor = System.Windows.Forms.Cursors.Default ;
this.toolTip.Active = false;
}
}
else
{
this.Cursor = System.Windows.Forms.Cursors.Default ;
this.toolTip.Active = false;
}
base.OnMouseMove(e);
}
}
public delegate void TreeViewExEventHandler(object sender,TreeViewExEventArgs e);
public class TreeViewExEventArgs : System.EventArgs
{
public TreeViewExEventArgs(System.Windows.Forms.TreeNode SelectedNode)
{
this.m_SelectedNode = SelectedNode;
}
public TreeViewExEventArgs(System.Windows.Forms.TreeNode Node,System.Windows.Forms.ToolTip NodeToolTip)
{
this.m_NodeToolTip = NodeToolTip;
this.m_Node = Node;
}
public TreeViewExEventArgs(System.Windows.Forms.TreeNode Node,string ToolTipText)
{
this.m_ToolTipText = ToolTipText;
}
private string m_ToolTipText;
private System.Windows.Forms.ToolTip m_NodeToolTip;
private System.Windows.Forms.TreeNode m_SelectedNode;
private System.Windows.Forms.TreeNode m_Node;
public System.Windows.Forms.TreeNode SelectedNode
{
get
{
return this.m_SelectedNode;
}
}
public string ToolTipText
{
get
{
return this.ToolTipText;
}
set{m_ToolTipText = value;}
}
public System.Windows.Forms.TreeNode Node
{
get
{
return this.m_Node;
}
}
public System.Windows.Forms.ToolTip NodeToolTip
{
get
{
return this.m_NodeToolTip;
}
}
}
public class TreeNodeEx : System.Windows.Forms.TreeNode
{
public int GetLevel()
{
int i = 0;
System.Windows.Forms.TreeNode xx =this.Parent;
while ((xx = xx.Parent) != null) i++;
return i;
}
}
//=================================================================
//调用示例
private TreeViewEx treeViewEx1;
private void Form1_Load(object sender, System.EventArgs e)
{
treeViewEx1 = new TreeViewEx();
this.Controls.Add(treeViewEx1);
treeViewEx1.HideSelection=false;
treeViewEx1.NodeDoubleClick +=new TreeViewExEventHandler(treeViewEx1_NodeDoubleClick);
treeViewEx1.NodeShowToolTip += new TreeViewExEventHandler(this.treeViewEx1_NodeShowToolTip);
treeViewEx1.Nodes.AddRange(new System.Windows.Forms.TreeNode[]{
new System.Windows.Forms.TreeNode("Root",
new System.Windows.Forms.TreeNode[]
{new System.Windows.Forms.TreeNode("a"),new System.Windows.Forms.TreeNode("b")}
),
new System.Windows.Forms.TreeNode("Root1",
new System.Windows.Forms.TreeNode[]
{new System.Windows.Forms.TreeNode("a1"),new System.Windows.Forms.TreeNode("b1")}
)
}
);
}
public void treeViewEx1_NodeShowToolTip (object sender,TreeViewExEventArgs e)
{
e.NodeToolTip.SetToolTip (this.treeViewEx1,"[" + e.Node.Text + "]{" );
}
private void treeViewEx1_NodeDoubleClick(object sender, TreeViewExEventArgs e)
{
if (e.SelectedNode.GetNodeCount(true)==0 )
System.Windows.Forms.MessageBox.Show(e.SelectedNode.Text);
}
下一篇:我自己写的自定义Web的上传控件 >>
相关文章:
- · 续
- · Simple Paging in Repeater and DataList Controls
- · ASP.NET编程中的十大技巧(建议进精华)
- · 转贴:DataGrid/DataList
- · 用ASP.NET写你自己的代码生成器(1)。
- · ASP.NET中Cookie编程的基础知识(6)
- · ASP.NET中Cookie编程的基础知识(5)
- · ASP.NET中Cookie编程的基础知识(4)
- · ASP.NET中Cookie编程的基础知识(3)
- · ASP.NET中Cookie编程的基础知识(2)
- · ASP.NET中Cookie编程的基础知识(1)
- · .NET中窗体间相互访问的几种方式
- · .net中PictureBox中图片的拖动
- · 在.NET上如何根据字符串动态创建控件
- · .NET 窗体之间的交互
- · 使用UltraWinGrid时双击的处理
- · .Net 下的Wondows窗体常用项目
- · 在.net中实现与ASP完全兼容的MD5算法(包括中文字符)
- · .Net FrameWork SDK文档的例子演示
- · 利用.NET语言开发自己的脚本语言(一)
- · .NET中的数据类型的一些变化
- · 网上发现的文章(测试驱动开发)
- · .NET程序实现多语言
- · .NET Framework中使用XML Web Service(2)
- · .NET Framework中使用XML Web Service(1)
- · 管理三元式的新思路,涉及到查询时似乎可以借用Social Network的思想
- · 使用AOP微型框架的例子
- · VB.NET中使用FTP下载文件的两种方法
- · .net下基于API封装的DirectUIHWND窗体访问
- · 在.net中调用存储过程的另一种方法
- · .NET Remoting 实现分布式数据库查询
- · 使用CodeDom开发基于B/S的.NET+MSSQL代码生成器的随感
- · 利用.NET的Reflection增强对象工厂的扩展性
- · .NET框架中基于角色的安全性(3)
- · .NET框架中基于角色的安全性(2)
- · .NET框架中基于角色的安全性(1)
- · .net的4个基本概念
- · 部署.net平台的程序
