WinForm递归获取树形菜单及右键菜单
来源:互联网 发布:微交易系统源码破解版 编辑:程序博客网 时间:2024/05/13 10:09
第一篇博客,有不到之处和抄袭嫌疑还请海涵,都是项目时累计的经验,本人新手,之前从未接触计算机语言,偶然机会下学了半年。现在上班半年,开发路上还有很多需要学习的地方,在这里希望多多认识各路老师,多多指教!趁着周末,闲极无聊就写写博客,混个面熟,也许也还能帮助别人...何乐不为?
此代码段是从一次项目中,拖动节点保存到任意节点下的片段。开发时所用的控件为Telerik控件包,此Demo没有使用到,代码也是简化版,如果有朋友需要借鉴可发邮件或者微信索取...
直接上:
效果图
数据表结构
Code
public partial class Form1 : Form { //数据库对象 DBConsts db = new DBConsts(); //利用DataTable递归 private DataTable dt; public Form1() { InitializeComponent(); //树形菜单节点右键事件 this.treeView1.NodeMouseClick += new TreeNodeMouseClickEventHandler(treeView1_NodeMouseClick); //获取数据 dt = db.GetTable(); //递归 GetRootNode(); } /// <summary> /// 节点右键事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { //是否单击右键 if (e.Button == MouseButtons.Right) { //初始化菜单 ContextMenuStrip cm = new ContextMenuStrip(); //菜单选项 string[] menuItem = { "增加", "修改", "删除" }; //循环添加菜单选项 for (int i = 0; i < menuItem.Length; i++) { cm.Items.Add(menuItem[i]); } //菜单选项单击事件 cm.ItemClicked += new ToolStripItemClickedEventHandler(cm_ItemClicked); //绑定菜单选项到树形菜单 this.treeView1.ContextMenuStrip = cm; } } /// <summary> /// 菜单选项单击事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void cm_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { //判断是否选项为空(没试过,也许多余) if (e.ClickedItem == null) return; //判断选择项值 if (e.ClickedItem.Text == "增加") { MessageBox.Show("这里是添加事件,比如弹出窗口"); } else if (e.ClickedItem.Text == "修改") { MessageBox.Show("这里是修改事件,比如弹出窗口"); } else if (e.ClickedItem.Text == "删除") { MessageBox.Show("这里是删除事件,比如弹出窗口"); } } /// <summary> /// 递归根节点 /// </summary> public void GetRootNode() { int rootNodeId = 0;//根节点ID DataRow[] rows = dt.Select("parent_node_id=" + rootNodeId + "");//找到匹配根节点ID的数据项 TreeNode tn = null;//声明树形菜单 //遍历根节点 foreach (DataRow dr in rows) { tn = new TreeNode();//实例化 tn.Tag = dr;//将节点属性绑定到Tag tn.Text = dr["node_name"].ToString();//节点显示内容 tn.Name = dr["node_id"].ToString();//节点Name值 this.treeView1.Nodes.Add(tn);//添加节点到树形菜单 GetChildNode(tn);//递归子节点,传递根节点 } } /// <summary> /// 递归子节点 /// </summary> /// <param name="tn"></param> public void GetChildNode(TreeNode tn) { DataRow dr = (DataRow)tn.Tag;//获取节点 int parentNodeId = (int)dr["node_id"];//定义节点编号 DataRow[] rows = dt.Select("parent_node_id=" + parentNodeId + "");//查找匹配节点 //遍历子节点 foreach (DataRow item in rows) { TreeNode tnode = new TreeNode();//实例化新节点 tnode.Tag = item; tnode.Text = item["node_name"].ToString(); tnode.Name = item["node_id"].ToString(); tn.Nodes.Add(tnode);//将新节点添加到旧节点下 GetChildNode(tnode);//递归子节点的子节点 } } }
0 0
- WinForm递归获取树形菜单及右键菜单
- 树形控件右键菜单
- tree 递归 树形菜单!
- 递归树形菜单
- 树形菜单递归
- winform datagridview添加右键菜单
- C# winform 右键下拉菜单
- 控制WinForm中右键菜单
- qt右键菜单及右键菜单功能
- 堆栈 and 递归 获取无限极树形菜单
- Java树形菜单 递归实现
- jqgrid 树形菜单递归加载
- WPF 与 WinForm 调用系统右键菜单/资源管理器右键菜单/桌面右键菜单
- 带右键菜单的树形控件(1)
- 带右键菜单的树形控件(1)
- 树形菜单右键如何动态配置
- 简单的右键菜单编剧树形节点
- 树形控件QTreeView添加右键菜单
- 图片压缩算法,保证图片不失真
- pyqt4制作透明无边框窗体
- 两条有趣的机试试题
- MTK报错与分析
- js验证表单大全
- WinForm递归获取树形菜单及右键菜单
- HDU:4249 A Famous Equation(数位DP)
- LCD 驱动中参数说明
- 编写 EL 自定义函数 的方法
- Camera硬件及基于V4L2驱动源码分析
- Google Breakpad 完全解析(一) —— Windows入门篇
- 指针趣谈
- 黑马程序员-C语言学习日记二之位运算符小结
- spark发展与未来