TreeView 的派生類: TreeViewEx 實現 NodeShowToolTip、NodeDoubleClick 事件 (轉)
// to:playyuer@Microshaoft.com">playyuer@Microshaoft.com invent
//一個 TreeView 的派生類: TreeViewEx 實現 NodeShowToolTip、NodeDoubleClick 事件
//1.實現了 NodeShowToolT事件,結合鍵盤 Ctrl 鍵顯示及設定 ToolTipText
//2.實現了 NodeDoubleClick 事件,可在中只響應"葉子"節點
//3.點選 TreeView 空白處不選中任何節點
//Class1.cs
using System;
public class TreeViewEx : System..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 overr void OnDoubleClick(System.EventArgs e)
{
if (this.edNode != 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( 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("",
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);
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-997870/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基類與派生類的轉換
- PB TreeView 屬性,事件詳解(轉)View事件
- 派生類
- 類的繼承和派生繼承
- 泛型類派生子類泛型
- 繼承 基類與派生類繼承
- 《C++ Primer》派生類到基類轉換的可訪問性C++
- PB下使用TreeView控制元件實現多級分類檢索View控制元件
- 類轉json的基類實現JSON
- C++派生類的拷貝構造C++
- 顧客類的派生(C#程式碼)C#
- C# 繼承 子類(派生類) 父類(基類)C#繼承
- 控制元件treeview的使用 (轉)控制元件View
- [C++]繼承和派生類C++繼承
- VB實現抽象類 (轉)抽象
- 基於jquery-treeview的動態選單實現jQueryView
- C++派生類物件訪問基類的protected成員C++物件
- Asp.net利用Treeview實現樹形列表ASP.NETView
- CDC的四個派生類CClientDC,CPaintDC,CWindowDC,CMetaFileDclientAI
- MySQL派生表合併最佳化的原理和實現MySql
- 漫談QWidget及其派生類(二)
- WPF 控制元件類派生關係控制元件
- c#之基類派生類base_小記C#
- c# 基類派生類成員方法訪問C#
- TreeView學習筆記 (轉)View筆記
- virtual inheritance 的妙用--------實現final類 (轉)
- c#之基類派生類base_小記(2)C#
- Object TreeView簡要說明 (轉)ObjectView
- Java GUI之事件監聽與處理的匿名類實現方法JavaGUI事件
- 實現類似IE的列印網頁功能 (轉)網頁
- C#基礎:多型:基類可以定義並實現虛(virtual)方法,派生類可以重寫(override)這些方法...C#多型IDE
- 簡單實現UILabel之協議類點選事件UI協議事件
- 建立派生類物件,建構函式的執行順序物件函式
- 用虛擬函式實現事件驅動! (轉)函式事件
- lakeFS:實現類似於Git或事件溯源ES的物件儲存功能Git事件物件
- InputStream類的實現
- 淺談MFC中超類化技術的實現 (轉)
- C++物件切片探秘:派生類物件如何被‘切割’?C++物件