温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C# treeview右键添加,删除,重名字树节点

发布时间:2020-06-23 08:19:07 来源:网络 阅读:6561 作者:584851044 栏目:编程语言

首先在Form上添加右键菜单,ConTextMenuStrip设置好菜单的右键弹出项的名字,之后在Treeview设置MouceDown事件,判断是不是右键点击,是的话,在判断是不是选中节点,都满足弹出右键选择菜单。

我的TreeView因为需要设置成的只能有一个节点被选中。

 

 

代码如下:

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();
}
}
}

结果如图:

C# treeview右键添加,删除,重名字树节点

C# treeview右键添加,删除,重名字树节点

C# treeview右键添加,删除,重名字树节点

C# treeview右键添加,删除,重名字树节点

 

 

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI