winform节点处理
来源:互联网 发布:mac双系统开机默认 编辑:程序博客网 时间:2024/05/18 00:56
1、查找一个节点的所有子节点(借鉴)
private bool FindNode(TreeNode Node)
{
。。。
return true;
}
private void FindAllNodes(TreeNode baseTreeNode)
{
int num = baseTreeNode.Nodes.Count;
TreeNode Node;
for (int i = 0; i < num - 1; i++)
{
Node = baseTreeNode.Nodes[i];
findNode(Node);
if (Node.Nodes.Count > 0)
{
findAllNodes(Node);
}
}
}
调用:FindAllNodes(treeview1.SelectedNode)
2、 /// <summary>
/// 递归通过某个value查找节点
/// </summary>
/// <param name="tnParent"></param>
/// <param name="strValue"></param>
/// <returns></returns>
private TreeNode FindNode(TreeNode tnParent, string strValue)
{
if (tnParent == null) return null;
if (tnParent.Text == strValue)
return tnParent;
TreeNode tnRet = null;
foreach (TreeNode tn in tnParent.Nodes)
{
tnRet = FindNode(tn, strValue);
if (tnRet != null)
break;
}
return tnRet;
}
3、将还有父子节点的List绑定到treeview
/// <summary>
/// 数据库的图层类型绑定到树
/// </summary>
/// <param name="list"></param>
/// <param name="Nds"></param>
/// <param name="parentId"></param>
public void InitTree(List<LayerType> list, TreeNodeCollection Nds, int parentId)
{
TreeNode NewNode;
for (int i = 0; i < list.Count; i++)
{
int id = list[i].TypeID;
if (list[i].ParentID == parentId)
{
NewNode = new TreeNode(list[i].TypeName);
NewNode.Tag = list[i].TypeCode;
Nds.Add(NewNode);
LayerData info = new LayerData();
if (null == NewNode.Tag)
info.TypeId = 0;
else
info.TypeId = int.Parse(NewNode.Tag.ToString());
info.LayerNumber = list[i].TypeID;
info.FullName = NewNode.FullPath;
NewNode.ImageIndex = 0;
NewNode.SelectedImageIndex = 1;
InitTree(list, NewNode.Nodes, id);
// NewNode.ExpandAll();
}
}
}
调用:InitTree(layerTypes, trvType.Nodes, 0);
4、
private void LoadWorkArea() { trvcmbWorkArea.Nodes.Clear(); List<WorkArea> workAreas = dataCollection.GetWorkAreas(null); if (workAreas != null && workAreas.Count > 0) { ConditionNode cNode = new ConditionNode(); cNode.IsLeaf = true; cNode.Name = "GraphId"; cNode.Op = Operation.EQ; cNode.Value = -999; Condition condition = new Condition(cNode); List<Target> targets = dataCollection.GetTargets(condition); for (int i = 0; i < workAreas.Count; i++) { if (workAreas[i].Parentid == 0) { TreeNode root = new TreeNode(); root.Text = workAreas[i].Workareaname; root.Tag = workAreas[i]; trvcmbWorkArea.Nodes.Add(root); AddTargetNode(root, targets); if (workAreas.Exists(wa => wa.Parentid == workAreas[i].Workareaid)) { LoadSubWorkArea(root, workAreas, targets); } } } trvcmbWorkArea.ExpandAll(); // SelectDefauleTarget(); } } /// <summary> /// 添加成图目标节点 /// </summary> /// <param name="wNode">工区节点</param> /// <param name="targets">成图目标集合</param> private void AddTargetNode(TreeNode wNode, List<Target> targets) { int wId = ((WorkArea)wNode.Tag).Workareaid; //按工区筛选 List<Target> tars = targets.FindAll(t => t.Workareaid == wId); if (tars != null && tars.Count > 0) { for (int i = 0; i < tars.Count; i++) { TreeNode node = new TreeNode(); node.Text = tars[i].Targetname; node.Tag = tars[i]; wNode.Nodes.Add(node); } } } /// <summary> /// 加载子工区(递归) /// </summary> /// <param name="pNode">父节点</param> /// <param name="workAreas">工区集合</param> /// <param name="targets">成图目标集合</param> private void LoadSubWorkArea(TreeNode pNode, List<WorkArea> workAreas, List<Target> targets) { int pId = ((WorkArea)pNode.Tag).Workareaid; for (int i = 0; i < workAreas.Count; i++) { if (workAreas[i].Parentid == pId) { TreeNode node = new TreeNode(); node.Text = workAreas[i].Workareaname; node.Tag = workAreas[i]; pNode.Nodes.Add(node); AddTargetNode(node, targets); if (workAreas.Exists(wa => wa.Parentid == workAreas[i].Workareaid)) { LoadSubWorkArea(node, workAreas, targets); } } } }
- winform节点处理
- Winform中读取节点
- Winform TreeView 节点拖动
- 如何在Visual Studio C#.Net WinForm 中 TreeView中右键选择节点进行处理
- winform中根据节点名称找到节点
- winform Treeview 拖拽节点
- C# winform treeview节点重命名
- C# winform 创建 xml节点
- winform 两个TreeView间拖拽节点
- winform程序托盘处理
- winForm datagridview 表头处理
- winForm 合并行处理
- Winform CLR20r3 异常处理。
- winform全局异常处理
- TreeView给节点添加图片(winform)
- C# WinForm TreeView增加子节点
- winform app.config添加自定义节点
- c#winform treeview根据菜单创建节点
- Android 进阶7:进程通信之 AIDL 的使用
- Android 7.0: Force stop application 3 times during package OTA.
- phpcms搜索双模版方法
- Hive学习指南(五)
- echarts 圆角渐变柱状形图
- winform节点处理
- 设计模式精彩博客
- 用lua实现一个效果,输入一个字符串,输出该字符串中所有的字符组合
- <奔跑吧Linux内核>最新目录
- sbucat和subcate
- MACOS X QT部署
- 查看和撤销权限+存储权限信息的数据字典视图+查看权限+撤销系统权限+撤销对象权限
- 容易理解的快速排序算法及其相关算法的总结(含java实现方法)
- 总有学生在思考,我能不能做产品经理?