// https://youtu.be/m2Uc_d_dVdU
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TreeViewCode
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
label1.Text = "Node : " + GetTotalNodes(treeView1) ;
}
private int GetTotalNodes(TreeView treeView)
{
return GetChildNodesCount(treeView.Nodes) ;
}
private int GetChildNodesCount(TreeNodeCollection nodes)
{
int nodeC = nodes.Count ;
foreach(TreeNode node in nodes)
{
nodeC += GetChildNodesCount(node.Nodes) ;
}
return nodeC ;
}
private void button1_Click(object sender, EventArgs e)
{
if(treeView1.Nodes[0].IsExpanded)
treeView1.CollapseAll();
else
treeView1.ExpandAll();
}
private void button2_Click(object sender, EventArgs e)
{
if(treeView1.SelectedNode==null) return ;
if(treeView1.SelectedNode.IsExpanded)
treeView1.SelectedNode.Collapse();
else
treeView1.SelectedNode.Expand();
}
private void button3_Click(object sender, EventArgs e)
{ // Node Add
if(treeView1.SelectedNode==null) return ;
string nName = "Node" + GetTotalNodes(treeView1) ;
TreeNode newNode = new TreeNode(nName);
treeView1.SelectedNode.Nodes.Add(newNode);
treeView1.SelectedNode.Expand();
label1.Text = "Node : " + GetTotalNodes(treeView1) ;
}
private void button4_Click(object sender, EventArgs e)
{ // Node Remove
if(treeView1.SelectedNode==null) return ;
treeView1.Nodes.Remove(treeView1.SelectedNode);
label1.Text = "Node : " + GetTotalNodes(treeView1) ;
}
TreeNode searchNode=null;
private void button5_Click(object sender, EventArgs e)
{
searchNode=null;
SearchChildNodes(treeView1.Nodes, textBox1.Text) ;
if(searchNode==null) return ;
treeView1.SelectedNode = searchNode ;
treeView1.Focus();
}
private void SearchChildNodes(TreeNodeCollection nodes, string name)
{
if(searchNode!=null) return ;
foreach(TreeNode node in nodes)
{
if(name==node.Text)
{
searchNode = node ;
return ;
}
SearchChildNodes(node.Nodes, name);
}
}
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{ // currently selected
if(treeView1.SelectedNode==null) return ;
// previously selected node text is displayed...
label2.Text = treeView1.SelectedNode.Text;
}
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{ // after select
if(treeView1.SelectedNode==null) return ;
label2.Text = treeView1.SelectedNode.Text;
}
}
}