winform Treeview设置右键点击的节点
2015-11-25 15:15
459 查看
(1)要向窗体添加一个TreeView控件
(2)再添加一个ContextMenuStrip控件;
(3)就要给TreeView添加一个MouseDown事件,代码如下:
private void treeView1_MouseDown(object sender, MouseEventArgs e)
...{
if (e.Button == MouseButtons.Right)//判断你点的是不是右键
...{
Point ClickPoint = new Point(e.X, e.Y);
TreeNode CurrentNode = treeView1.GetNodeAt(ClickPoint);
if (CurrentNode != null)//判断你点的是不是一个节点
...{
switch (CurrentNode.Name)//根据不同节点显示不同的右键菜单,当然你可以让它显示一样的菜单
...{
case "errorUrl":
CurrentNode.ContextMenuStrip = contextMenuStripErrorUrl;
break;
}
treeView1.SelectedNode = CurrentNode;//选中这个节点
}
}
}
----------------------------------------------------------------------------------
(2)再添加一个ContextMenuStrip控件;
(3)就要给TreeView添加一个MouseDown事件,代码如下:
private void treeView1_MouseDown(object sender, MouseEventArgs e)
...{
if (e.Button == MouseButtons.Right)//判断你点的是不是右键
...{
Point ClickPoint = new Point(e.X, e.Y);
TreeNode CurrentNode = treeView1.GetNodeAt(ClickPoint);
if (CurrentNode != null)//判断你点的是不是一个节点
...{
switch (CurrentNode.Name)//根据不同节点显示不同的右键菜单,当然你可以让它显示一样的菜单
...{
case "errorUrl":
CurrentNode.ContextMenuStrip = contextMenuStripErrorUrl;
break;
}
treeView1.SelectedNode = CurrentNode;//选中这个节点
}
}
}
----------------------------------------------------------------------------------
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); InitTree(); } private void InitTree() { TreeNode node = new TreeNode("base1"); TreeNode node2 = new TreeNode("base2"); treeView1.Nodes.Add(node); treeView1.Nodes.Add(node2); node.Nodes.Add("a"); node.Nodes.Add("b"); node.Nodes.Add("c"); node2.Nodes.Add("d"); node2.Nodes.Add("e"); node2.Nodes.Add("f"); } //设置树单选,就是只能有一个树节点被选中 private void SetNodeCheckStatus(TreeNode tn, TreeNode node) { if (tn == null) return; if (tn != node) { tn.Checked = false; } // Check children nodes foreach (TreeNode tnChild in tn.Nodes) { if (tnChild != node) { tnChild.Checked = false; } SetNodeCheckStatus(tnChild, node); } } //在树节点被选中后触发 private void treeView1_AfterCheacked(object sender, TreeViewEventArgs e) { //过滤不是鼠标选中的其它事件,防止死循环 if (e.Action != TreeViewAction.Unknown) { //Event call by mouse or key-press foreach (TreeNode tnChild in treeView1.Nodes) SetNodeCheckStatus(tnChild, e.Node); string sName = e.Node.Text; } } //获得选择节点 private void GetSelectNode(TreeNode tn) { if (tn == null) return; if (tn.Checked == true) { m_NodeName = tn.Text; return; } // Check children nodes foreach (TreeNode tnChild in tn.Nodes) { GetSelectNode(tnChild); } } private void button1_Click(object sender, EventArgs e) { TreeNode node = null; foreach (TreeNode tnChild in treeView1.Nodes) { GetSelectNode(tnChild); } string sName = m_NodeName; } //选择树的节点并点击右键,触发事件 private void treeView1_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right)//判断你点的是不是右键 { Point ClickPoint = new Point(e.X, e.Y); TreeNode CurrentNode = treeView1.GetNodeAt(ClickPoint); if (CurrentNode != null && true == CurrentNode.Checked)//判断你点的是不是一个节点 { switch (CurrentNode.Name)//根据不同节点显示不同的右键菜单,当然你可以让它显示一样的菜单 { case "": CurrentNode.ContextMenuStrip = contextMenuStrip1; break; default: break; } treeView1.SelectedNode = CurrentNode;//选中这个节点 } } } private String m_NodeName = null; //右键设置节点可以重命名 private void toolStripMenuItem2_Click(object sender, EventArgs e) { //窗体的LabelEdir为false,因此每次要BeginEdit时都要先自LabelEdit为true treeView1.LabelEdit = true; treeView1.SelectedNode.BeginEdit(); } //右键添加节点 private void toolStripMenuItem1_Click(object sender, EventArgs e) { //在Tree选择节点的同一级添加节点 treeView1.LabelEdit = true; TreeNode CurrentNode = treeView1.SelectedNode.Nodes.Add("Node1"); //更新选择节点 treeView1.SelectedNode.Checked = false; CurrentNode.Checked = true; //使添加的树节点处于可编辑的状态 CurrentNode.BeginEdit(); } //右键删除节点 private void toolStripMenuItem3_Click(object sender, EventArgs e) { treeView1.SelectedNode.Remove(); } } }
相关文章推荐
- @CentOS安装MySQL
- 支付宝移动支付开发详细教程服务端采用.net mvc webapi(C#)
- jquery插件下载地址
- Android 锁屏状态/锁屏密码等相关
- CriminalIntent项目开发笔记(四)----使用fragment argument
- Spark开发指南Spark Programming Guide
- 一个丝滑的全屏滑动返回手势
- iOS 中gzip压缩不使用asi的方法
- 【Python网络爬虫】百度贴吧/豆瓣小组
- Android使用Unity导致Activity被销毁的解决办法
- HRESULT:0x80029C4A错误
- git中报unable to auto-detect email address 错误的解决拌办法
- java 正则表达式的应用:读取文件,获取其中的电话号码
- bootstrap学习和使用的经验总结
- CEO、COO、CFO、CTO
- 学习数据结构与算法分析如何帮助您成为更优秀的开发人员
- 判断条件问题是否存在
- Android WebView页面加载优化
- CentOS 修改主机全名
- 删除操作后续影响,操作