添加节点
C#.Net中TreeView控件右键选择节点问题处理
默认选中TreeVIew中的一个节点
TreeView,左键单击节点时可修改节点名称
- private void Form1_Load(object sender, EventArgs e)
- {
- treeView1.LabelEdit = true;//可编辑状态。
- //添加一个节点,这个结点是根节点。
- TreeNode node = new TreeNode();
- node.Text = "hope";
- treeView1.Nodes.Add(node);
- TreeNode node1 = new TreeNode();
- node1.Text = "hopeone";
- TreeNode node11 = new TreeNode();
- node11.Text = "hopeoneone";
- TreeNode node2 = new TreeNode();
- node2.Text = "hopetwo";
- node1.Nodes.Add(node11);//在node1下面在添加一个结点。
- node.Nodes.Add(node1);//node下的两个子节点。
- node.Nodes.Add(node2);
- TreeNode t = new TreeNode("basil");//作为根节点。
- treeView1.Nodes.Add(t);
- TreeNode t1 = new TreeNode("basilone");
- t.Nodes.Add(t1);
- TreeNode t2 = new TreeNode("basiltwo");
- t.Nodes.Add(t2);
- }
private void Form1_Load(object sender, EventArgs e)
{
treeView1.LabelEdit = true;//可编辑状态。
//添加一个节点,这个结点是根节点。
TreeNode node = new TreeNode();
node.Text = "hope";
treeView1.Nodes.Add(node);
TreeNode node1 = new TreeNode();
node1.Text = "hopeone";
TreeNode node11 = new TreeNode();
node11.Text = "hopeoneone";
TreeNode node2 = new TreeNode();
node2.Text = "hopetwo";
node1.Nodes.Add(node11);//在node1下面在添加一个结点。
node.Nodes.Add(node1);//node下的两个子节点。
node.Nodes.Add(node2);
TreeNode t = new TreeNode("basil");//作为根节点。
treeView1.Nodes.Add(t);
TreeNode t1 = new TreeNode("basilone");
t.Nodes.Add(t1);
TreeNode t2 = new TreeNode("basiltwo");
t.Nodes.Add(t2);
}
删除
- private void button1_Click(object sender, EventArgs e)
- {
- //点击该按钮的时候,会移除选中项
- treeView1.Nodes.Remove(treeView1.SelectedNode);
- }
private void button1_Click(object sender, EventArgs e)
{
//点击该按钮的时候,会移除选中项
treeView1.Nodes.Remove(treeView1.SelectedNode);
}
修改
- private void button2_Click(object sender, EventArgs e)
- {
- //点击这个按钮的时候,可以修改选中项
- //注意:在使用这个属性的时候,必须设置treeView1.LabelEdit =true,否则会提示错误。
- treeView1.SelectedNode.BeginEdit();
- }
private void button2_Click(object sender, EventArgs e)
{
//点击这个按钮的时候,可以修改选中项
//注意:在使用这个属性的时候,必须设置treeView1.LabelEdit =true,否则会提示错误。
treeView1.SelectedNode.BeginEdit();
}
Treeview,点击不同的节点(包括父节点和父节点下的子节点)触发不同的事件,执行相应的方法
方法1:
treeView1_AfterSelect事件就是treeView1中节点被选择触发的事件,e.Node指的是当前选中的节点,e.Node.Nodes指的是当前选中节点的子节点集合。
- private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
- {
- if (e.Action == TreeViewAction.ByMouse)
- {
- //当前选中的节点有父节点,并且该父节点在相同级别的父节点中排行第一。
- if (e.Node.Parent != null && e.Node.Parent.Index == 0)
- {
- //当前选中节点在所有的兄弟节点中排第 一
- if(e.Node.Index==0)
- {
- //调用相应的方法();
- }
- }
- //表示当前节点没有父节点,并且在兄弟节点中排行第五(由零开始索引)
- if(e.Node.Parent==null&&e.Node.Index==4)
- {
- //调用相应的方法();
- }
- }
- }
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
if (e.Action == TreeViewAction.ByMouse)
{
//当前选中的节点有父节点,并且该父节点在相同级别的父节点中排行第一。
if (e.Node.Parent != null && e.Node.Parent.Index == 0)
{
//当前选中节点在所有的兄弟节点中排第 一
if(e.Node.Index==0)
{
//调用相应的方法();
}
}
//表示当前节点没有父节点,并且在兄弟节点中排行第五(由零开始索引)
if(e.Node.Parent==null&&e.Node.Index==4)
{
//调用相应的方法();
}
}
}
通过节点的Name属性来判断具体是哪个节点被选择,并执行相应的方法(这种方法效率高一些)
- private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
- {
- if (e.Action == TreeViewAction.ByMouse)
- {
- //说明当前选中节点没有子节点
- if(e.Node.Nodes.Count==0)
- {
- if(e.Node.name="aaa")
- {
- //执行相应的方法();
- }
- else if(e.Node.Name="bbb")
- {
- //执行相应的方法();
- }
- }
- }
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
if (e.Action == TreeViewAction.ByMouse)
{
//说明当前选中节点没有子节点
if(e.Node.Nodes.Count==0)
{
if(e.Node.name="aaa")
{
//执行相应的方法();
}
else if(e.Node.Name="bbb")
{
//执行相应的方法();
}
}
}
- TreeNode selNode = tree.SelectedNode;
- if (selNode == null)
- {
- //防止空引用
- return;
- }
- if (selNode.Parent != null)
- {
- //为有父亲节点的,
- TreeNode parentNode = selNode.Parent;//得到父亲节点
- if (selNode.Nodes.Count == 0)
- {
- //为没有子节点,即选中的节点为叶子节点
- }
- }
TreeNode selNode = tree.SelectedNode;
if (selNode == null)
{
//防止空引用
return;
}
if (selNode.Parent != null)
{
//为有父亲节点的,
TreeNode parentNode = selNode.Parent;//得到父亲节点
if (selNode.Nodes.Count == 0)
{
//为没有子节点,即选中的节点为叶子节点
}
}
C#.Net中TreeView控件右键选择节点问题处理
- private void treeView1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
- {
- if(e.Button==MouseButtons.Right)
- {
- TreeNode tn=treeView1.GetNodeAt(e.X,e.Y);
- if(tn!=null)treeView1.SelectedNode = tn;
- }
- }
private void treeView1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(e.Button==MouseButtons.Right)
{
TreeNode tn=treeView1.GetNodeAt(e.X,e.Y);
if(tn!=null)treeView1.SelectedNode = tn;
}
}
treeView1.ExpandAll();
默认选中TreeVIew中的一个节点
- //先找到你要设置选中的节点
- TreeNode tn = treeView1.Nodes[3];
- //把要设置的节点给SelectedNode
- this.treeView1.SelectedNode = tn;
- //this.TreeView1.SelectedNodeIndex="";
//先找到你要设置选中的节点
TreeNode tn = treeView1.Nodes[3];
//把要设置的节点给SelectedNode
this.treeView1.SelectedNode = tn;
//this.TreeView1.SelectedNodeIndex="";
TreeView,左键单击节点时可修改节点名称
TreeView本身可支持左键修改名称 在初始化时设置: TreeView.LabelEdit = true; 这样应用程序的treeview生成以后就支持单击节点修改。
</pre><pre id="best-content-1118048972" class="best-text mb-10" name="code" style="font-size: 14px; white-space: pre-wrap; word-wrap: break-word; color: rgb(54, 46, 43); line-height: 26px; background-color: rgb(255, 255, 255);">如果不想左键修改,可在treeView1_MouseDown中设置treeView1.LabelEdit = false;
<pre id="best-content-1118048972" class="best-text mb-10" name="code" style="white-space: pre-wrap; word-wrap: break-word; color: rgb(54, 46, 43); line-height: 26px; background-color: rgb(255, 255, 255);"><strong><span style="font-size:18px;">右键菜单 重命名</span></strong>
<pre name="code" class="csharp" style="font-size: 14px;">treeView1.LabelEdit = true; treeView.SelectedNode.BeginEdit();
<strong><span style="font-size:18px;">TreeVIew清空</span></strong>
TreeView.Nodes.Clear()