This commit is contained in:
72
PROMS/Volian.Controls.Library/vlnTreeView3.cs
Normal file
72
PROMS/Volian.Controls.Library/vlnTreeView3.cs
Normal file
@@ -0,0 +1,72 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using VEPROMS.CSLA.Library;
|
||||
|
||||
namespace Volian.Controls.Library
|
||||
{
|
||||
//public delegate void vlnTreeViewEvent(object sender, vlnTreeEventArgs args);
|
||||
//public delegate bool vlnTreeViewBoolEvent(object sender, vlnTreeEventArgs args);
|
||||
//public delegate TreeNode vlnTreeViewTreeNodeEvent(object sender, vlnTreeEventArgs args);
|
||||
//public delegate void vlnTreeViewDDEvent(object sender, System.Windows.Forms.DragEventArgs args);
|
||||
public partial class vlnTreeView3 : TreeView
|
||||
{
|
||||
private static readonly log4net.ILog _MyLog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
||||
#region Events
|
||||
public event vlnTreeViewEvent NodeSelectionChange;
|
||||
private void OnNodeSelectionChange(object sender, vlnTreeEventArgs args)
|
||||
{
|
||||
if (NodeSelectionChange != null) NodeSelectionChange(sender, args);
|
||||
}
|
||||
#endregion
|
||||
#region Business Methods
|
||||
#endregion
|
||||
#region Constructors
|
||||
public vlnTreeView3()
|
||||
{
|
||||
InitializeComponent();
|
||||
base.AfterSelect += new TreeViewEventHandler(tv_AfterSelect);
|
||||
}
|
||||
private void tv_AfterSelect(object sender, TreeViewEventArgs e)
|
||||
{
|
||||
OnNodeSelectionChange(sender, new vlnTreeEventArgs(e.Node));
|
||||
}
|
||||
#endregion
|
||||
private static TreeNode GetTreeNodeFromData(IDataObject datobj)
|
||||
{
|
||||
foreach (string s in datobj.GetFormats())
|
||||
{
|
||||
try
|
||||
{
|
||||
return (TreeNode)datobj.GetData(s);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
if (_MyLog.IsErrorEnabled) _MyLog.Error("GetTreeNodeFromData", ex);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
private TreeNode Clone(TreeNode tn)
|
||||
{
|
||||
|
||||
TreeNode tmp = (TreeNode)tn.Clone();
|
||||
ExpandMatch(tmp, tn);
|
||||
return tmp;
|
||||
}
|
||||
private void ExpandMatch(TreeNode tn1, TreeNode tn2)
|
||||
{
|
||||
if (tn2.IsExpanded) tn1.Expand();
|
||||
foreach (TreeNode tc in tn2.Nodes) ExpandMatch(tn1.Nodes[tc.Index], tc);
|
||||
}
|
||||
private bool IsChild(TreeNode parent, TreeNode child)
|
||||
{
|
||||
if (parent.Equals(child)) return true;// Check against self
|
||||
foreach (TreeNode tc in parent.Nodes) if (IsChild(tc, child)) return true;//Check all children
|
||||
return false;// Must not be a child at this level
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user