溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C# treeview右鍵添加,刪除,重名字樹節點

發布時間:2020-06-23 08:19:07 來源:網絡 閱讀:6603 作者: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

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女