溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C#中TreeNode的示例分析

發(fā)布時(shí)間:2021-08-19 11:48:14 來(lái)源:億速云 閱讀:428 作者:小新 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要介紹C#中TreeNode的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

添加節(jié)點(diǎn)

private void Form1_Load(object sender, EventArgs e)  
{  
    treeView1.LabelEdit = true;//可編輯狀態(tài)。  
  
    //添加一個(gè)節(jié)點(diǎn),這個(gè)結(jié)點(diǎn)是根節(jié)點(diǎn)。  
    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下面在添加一個(gè)結(jié)點(diǎn)。  
  
    node.Nodes.Add(node1);//node下的兩個(gè)子節(jié)點(diǎn)。  
    node.Nodes.Add(node2);  
  
  
    TreeNode t = new TreeNode("basil");//作為根節(jié)點(diǎn)。  
    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;//可編輯狀態(tài)。
 
            //添加一個(gè)節(jié)點(diǎn),這個(gè)結(jié)點(diǎn)是根節(jié)點(diǎn)。
            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下面在添加一個(gè)結(jié)點(diǎn)。
 
            node.Nodes.Add(node1);//node下的兩個(gè)子節(jié)點(diǎn)。
            node.Nodes.Add(node2);
 
 
            TreeNode t = new TreeNode("basil");//作為根節(jié)點(diǎn)。
            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)  
      {  
          //點(diǎn)擊該按鈕的時(shí)候,會(huì)移除選中項(xiàng)  
          treeView1.Nodes.Remove(treeView1.SelectedNode);  
      }
private void button1_Click(object sender, EventArgs e)
        {
            //點(diǎn)擊該按鈕的時(shí)候,會(huì)移除選中項(xiàng)
            treeView1.Nodes.Remove(treeView1.SelectedNode);
        }

修改

private void button2_Click(object sender, EventArgs e)  
       {  
           //點(diǎn)擊這個(gè)按鈕的時(shí)候,可以修改選中項(xiàng)  
           //注意:在使用這個(gè)屬性的時(shí)候,必須設(shè)置treeView1.LabelEdit =true,否則會(huì)提示錯(cuò)誤。  
           treeView1.SelectedNode.BeginEdit();  
       }
private void button2_Click(object sender, EventArgs e)
        {
            //點(diǎn)擊這個(gè)按鈕的時(shí)候,可以修改選中項(xiàng)
            //注意:在使用這個(gè)屬性的時(shí)候,必須設(shè)置treeView1.LabelEdit =true,否則會(huì)提示錯(cuò)誤。
            treeView1.SelectedNode.BeginEdit();
        }

C#中Treeview判斷選擇的節(jié)點(diǎn)并執(zhí)行不同的方法

Treeview,點(diǎn)擊不同的節(jié)點(diǎn)(包括父節(jié)點(diǎn)和父節(jié)點(diǎn)下的子節(jié)點(diǎn))觸發(fā)不同的事件,執(zhí)行相應(yīng)的方法

方法1:

treeView1_AfterSelect事件就是treeView1中節(jié)點(diǎn)被選擇觸發(fā)的事件,e.Node指的是當(dāng)前選中的節(jié)點(diǎn),e.Node.Nodes指的是當(dāng)前選中節(jié)點(diǎn)的子節(jié)點(diǎn)集合。

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)  
      {  
          if (e.Action == TreeViewAction.ByMouse)  
          {  
              //當(dāng)前選中的節(jié)點(diǎn)有父節(jié)點(diǎn),并且該父節(jié)點(diǎn)在相同級(jí)別的父節(jié)點(diǎn)中排行第一。  
              if (e.Node.Parent != null && e.Node.Parent.Index == 0)  
              {    
                  //當(dāng)前選中節(jié)點(diǎn)在所有的兄弟節(jié)點(diǎn)中排第 一  
                  if(e.Node.Index==0)   
                  {  
                       //調(diào)用相應(yīng)的方法();  
                  }  
              }  
              //表示當(dāng)前節(jié)點(diǎn)沒(méi)有父節(jié)點(diǎn),并且在兄弟節(jié)點(diǎn)中排行第五(由零開(kāi)始索引)  
              if(e.Node.Parent==null&&e.Node.Index==4)  
              {  
             //調(diào)用相應(yīng)的方法();  
               }  
          }  
      }
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            if (e.Action == TreeViewAction.ByMouse)
            {
                //當(dāng)前選中的節(jié)點(diǎn)有父節(jié)點(diǎn),并且該父節(jié)點(diǎn)在相同級(jí)別的父節(jié)點(diǎn)中排行第一。
                if (e.Node.Parent != null && e.Node.Parent.Index == 0)
                {  
                    //當(dāng)前選中節(jié)點(diǎn)在所有的兄弟節(jié)點(diǎn)中排第 一
                    if(e.Node.Index==0) 
                    {
                         //調(diào)用相應(yīng)的方法();
                    }
                }
                //表示當(dāng)前節(jié)點(diǎn)沒(méi)有父節(jié)點(diǎn),并且在兄弟節(jié)點(diǎn)中排行第五(由零開(kāi)始索引)
                if(e.Node.Parent==null&&e.Node.Index==4)
                {
               //調(diào)用相應(yīng)的方法();
                 }
            }
        }

方法二:

通過(guò)節(jié)點(diǎn)的Name屬性來(lái)判斷具體是哪個(gè)節(jié)點(diǎn)被選擇,并執(zhí)行相應(yīng)的方法(這種方法效率高一些)

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)  
        {  
             if (e.Action == TreeViewAction.ByMouse)  
             {  
                 //說(shuō)明當(dāng)前選中節(jié)點(diǎn)沒(méi)有子節(jié)點(diǎn)  
                 if(e.Node.Nodes.Count==0)  
                 {  
                      if(e.Node.name="aaa")  
                      {  
                           //執(zhí)行相應(yīng)的方法();  
                      }  
                      else if(e.Node.Name="bbb")  
                      {  
                           //執(zhí)行相應(yīng)的方法();  
                      }  
                 }  
            }
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
         {
              if (e.Action == TreeViewAction.ByMouse)
              {
                  //說(shuō)明當(dāng)前選中節(jié)點(diǎn)沒(méi)有子節(jié)點(diǎn)
                  if(e.Node.Nodes.Count==0)
                  {
                       if(e.Node.name="aaa")
                       {
                            //執(zhí)行相應(yīng)的方法();
                       }
                       else if(e.Node.Name="bbb")
                       {
                            //執(zhí)行相應(yīng)的方法();
                       }
                  }
             }

C# 怎么判斷TreeView選中的是子節(jié)點(diǎn) ?并且是屬于哪個(gè)父節(jié)?

TreeNode selNode = tree.SelectedNode;  
if (selNode == null)  
{  
    //防止空引用  
    return;  
}  
if (selNode.Parent != null)  
{  
    //為有父親節(jié)點(diǎn)的,  
    TreeNode parentNode = selNode.Parent;//得到父親節(jié)點(diǎn)                
    if (selNode.Nodes.Count == 0)  
    {  
        //為沒(méi)有子節(jié)點(diǎn),即選中的節(jié)點(diǎn)為葉子節(jié)點(diǎn)  
    }  
}
TreeNode selNode = tree.SelectedNode;
if (selNode == null)
{
    //防止空引用
    return;
}
if (selNode.Parent != null)
{
    //為有父親節(jié)點(diǎn)的,
    TreeNode parentNode = selNode.Parent;//得到父親節(jié)點(diǎn)              
    if (selNode.Nodes.Count == 0)
    {
        //為沒(méi)有子節(jié)點(diǎn),即選中的節(jié)點(diǎn)為葉子節(jié)點(diǎn)
    }
}

C#.Net中TreeView控件右鍵選擇節(jié)點(diǎn)問(wèn)題處理

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

treeView默認(rèn) 展開(kāi)

treeView1.ExpandAll();

默認(rèn)選中TreeVIew中的一個(gè)節(jié)點(diǎn)

//先找到你要設(shè)置選中的節(jié)點(diǎn)
TreeNode tn = treeView1.Nodes[3];
//把要設(shè)置的節(jié)點(diǎn)給SelectedNode
this.treeView1.SelectedNode = tn;
//this.TreeView1.SelectedNodeIndex="";

TreeView,左鍵單擊節(jié)點(diǎn)時(shí)可修改節(jié)點(diǎn)名稱

TreeView本身可支持左鍵修改名稱
在初始化時(shí)設(shè)置:
TreeView.LabelEdit = true; 
這樣應(yīng)用程序的treeview生成以后就支持單擊節(jié)點(diǎn)修改。
如果不想左鍵修改,可在treeView1_MouseDown中設(shè)置treeView1.LabelEdit = false;
右鍵菜單 重命名
treeView1.LabelEdit = true;
treeView.SelectedNode.BeginEdit();

TreeVIew清空

TreeView.Nodes.Clear()

以上是“C#中TreeNode的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI