/// <summary>
/// 递归选中子节点
/// </summary>
/// <param name="treeNode">节点</param>
/// <param name="nodeChecked">bool值</param>
private void CheckAllChildNodes(TreeNode treeNode, bool nodeChecked)
{
foreach(TreeNode node in treeNode.Nodes)
{
node.Checked = nodeChecked;
if(node.Nodes.Count > 0)
{
//如果当前结点有子节点,调用递归函数
this.CheckAllChildNodes(node, nodeChecked);
}
}
}
/// <summary>
/// 调出某一操作员的相关权限
/// </summary>
/// <param name="treeView">权限树</param>
/// <param name="PopeArray">模块ID</param>
private void CallRecursive(TreeView treeView,string [] PopeArray)
{
TreeNodeCollection nodes = treeView.Nodes;
foreach (TreeNode n in nodes)
{
//n.Checked =true;
PrintRecursive(n,PopeArray);
}
}
/// <summary>
/// 递归调用
/// </summary>
/// <param name="treeNode">节点</param>
/// <param name="PopeArray">模块ID</param>
private void PrintRecursive(TreeNode treeNode,string [] PopeArray)
{
foreach (TreeNode tn in treeNode.Nodes)
{
foreach (string str in PopeArray)
{
if (str.Trim().ToString()==((COM.JS.Park.DMT.DMTModule)tn.Tag).MOD_ID.Trim().ToString())
{
tn.Checked =true;
tn.Parent.Checked =true;
}
}
PrintRecursive(tn,PopeArray);
}
}
/// <summary>
/// 设置树节点背景色
/// </summary>
/// <param name="treeNode"></param>
/// <param name="_flag"></param>
private void SetTreeBackRecursive(TreeNode treeNode,bool _flag)
{
foreach (TreeNode tn in treeNode.Nodes)
{
if (_flag==true)
tn.BackColor=System.Drawing.Color.White;
else
tn.BackColor=System.Drawing.Color.FromArgb(((System.Byte)(231)), ((System.Byte)(240)), ((System.Byte)(250)));
SetTreeBackRecursive(tn,_flag);
}
}
#region 树节点拖动
private void trv_ParkTree_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
//取源节点信息 获得进行"Drag"操作中拖动的字符串
TreeNode sourceNode=this.trv_ParkTree.SelectedNode;
string dummy = "temp" ;
string source_Text = ( string ) e.Data.GetData ( dummy.GetType ( ) ) ;
string target_Text="";
int source_id=0;
source_Text = source_Text.Substring ( source_Text.IndexOf ( ":" ) + 1 ).Trim ( ) ;
string soruceNodeType=this.checkNode(sourceNode);
TreeNode DragNode = new TreeNode ( source_Text ) ; //新建一个节点
DragNode.Tag=sourceNode.Tag;
switch (soruceNodeType) //根据源节点类型取相关ID
{
case "ParkNode":
source_id=((OMTPark)this.trv_ParkTree.SelectedNode.Tag).PRK_ID;
DragNode.ImageIndex =0;
break;
case "RootParkNode":
source_id=((OMTPark)this.trv_ParkTree.SelectedNode.Tag).PRK_ID;
soruceNodeType="ParkNode";
DragNode.ImageIndex =1;
break;
case "ComputerNode":
source_id=((OMTComputer)this.trv_ParkTree.SelectedNode.Tag).COM_ID;
DragNode.ImageIndex =2;
break;
case "MachineNode":
source_id=((OMTMachine)this.trv_ParkTree.SelectedNode.Tag).MAC_NO;
DragNode.ImageIndex =3;
break;
default:
break;
}
//MessageBox.Show (source_Text+" "+soruceNodeType);
//取目标节点信息
m_Position.X = e.X ;
m_Position.Y = e.Y ;
m_Position = trv_ParkTree.PointToClient ( m_Position ) ;
TreeNode DropNode = this.trv_ParkTree.GetNodeAt ( m_Position ) ;
string targetNodeType=this.checkNode(DropNode);
target_Text=DropNode.Text.Trim();
//MessageBox.Show (DropNode.Text);
//在目标组件中加入以此字符串为标题的项目
if ( DropNode != null && source_id.ToString()!="" )
{
if ( (soruceNodeType=="ComputerNode" && targetNodeType=="RootParkNode") || (soruceNodeType=="ParkNode" && targetNodeType=="ParkNode") || (soruceNodeType=="ComputerNode" && targetNodeType=="ParkNode") || (soruceNodeType=="MachineNode" && targetNodeType=="ComputerNode") )
{
if (source_Text==target_Text)
{
MessageBox.Show (this,"拖放位置不对","提示",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
return;
}
if (targetNodeType=="RootParkNode" && soruceNodeType=="ParkNode")
{
((OMTPark)sourceNode.Tag).PPARK_ID=((OMTPark)DropNode.Tag).PRK_ID;
((OMTPark)sourceNode.Tag).store();
}
else if (targetNodeType=="ParkNode" && soruceNodeType=="ComputerNode" || targetNodeType=="RootParkNode" && soruceNodeType=="ComputerNode")
{
((OMTComputer)sourceNode.Tag).PRK_ID =((OMTPark)DropNode.Tag).PRK_ID;
((OMTComputer)sourceNode.Tag).store();
}
else if (targetNodeType=="ComputerNode" && soruceNodeType=="MachineNode")
{
((OMTMachine)sourceNode.Tag).COM_ID=((OMTComputer)DropNode.Tag).COM_ID;
((OMTMachine)sourceNode.Tag).store();
}
initLoadTree();
//DropNode.Nodes.Insert(DropNode.Index+1 , DragNode ); //插入到目标节点
//this.trv_ParkTree.SelectedNode.Remove();
}
else
{
MessageBox.Show ("拖放位置不正确","提示",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
}
}
}
private void trv_ParkTree_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
//判断是否目前拖动的数据是字符串,如果是,则拖动字符串对目的组件进行拷贝
if ( e.Data.GetDataPresent ( DataFormats.Text ) )
{
e.Effect = DragDropEffects.Move ;
}
else
{
e.Effect = DragDropEffects.None ;
}
}
private void trv_ParkTree_ItemDrag(object sender, System.Windows.Forms.ItemDragEventArgs e)
{
//判断是否是鼠标右键按动
if(this.trv_ParkTree.SelectedNode==null)
{
return;
}
else if( this.trv_ParkTree.SelectedNode.Parent==null)
{
return;
}
else if( e.Button == MouseButtons.Right )
{
return;
}
string strItem = e.Item.ToString ( ) ; //开始进行"Drag"操作
//DoDragDrop ( strItem , DragDropEffects.Copy | DragDropEffects.Move ) ;
DoDragDrop(strItem, DragDropEffects.Move);
}
private void trv_ParkTree_DragOver(object sender, System.Windows.Forms.DragEventArgs e)
{
}
#endregion
相关推荐
TreeView操作TreeView操作TreeView操作
TreeView的基本操作(5KB)
VB TreeView节点操作 ^_^ E动天下—VB专业源码网 本站是一个免费的基于VB,VB.NET源代码交流的平台,为大家提供优质的专业的源代码,如果您有需要,本站可以帮助在业余时间里给您寻找代码。当然,如果您有好的代码...
TreeView操作XML TreeView操作XML TreeView操作XML 增删改查
DelPhi Treeview 操作实例
用vc实现对treeview的基本操作,希望能给大家带来帮助
TreeView操作实例-VS2005TreeView操作实例-VS2005
通过实例让你掌握TreeView的基本操作!
在TreeView上直接操作 可以添加节点 可以拖动节点 修改节点文本
专门用来操作Treeview和数据库
TreeView的高级用法。结构最简单分级保存方法。
1.设置所选节点,如选中第二个节点 function SetSelNode() { TreeView1.selectedNodeIndex="1"; } 2.得到所选节点的Text,ID或NodeData function GetAttribute() { ...
treeview 动态数据库操作类 动态数据库绑定
本资源由[源码天空]搜集整理,本人只为共享该资源,不承担任何技术及版权问题。本资源仅提供学习参考,不得用于商业用途。
treeView控件实现拖放操作,用处不大
简单三层,对TreeView的节点经行增删该查!
C#treeview的添加节点,查询节点,递归调用和显示节点等齐全的操作都有,以及利用制作了一个类似表格的横向树的treeview
wpf TreeView控件基本操作,如何在Xaml代码中添加,及在Cs文件中用代码添加
XML和TreeView操作技术,里面基本上都是源代码,拷过去就可以用,主要包括以下功能:XML节点的添加,删除, XML绑定到TreeView,xml显示成表格等
摘要:VB源码,控件组件,TreeView与文件夹操作示例 基于VB实现的TreeView与文件夹操作示例,一个Treeview自动装载目录式数据的实例,点击窗口下边的按钮,即可自动获取目录树内容生成目录树,可一级一级装载,...