TreeViewの特定のノードの子ノードを削除する
TreeViewにて特定のノードの子ノードを削除する方法を紹介します。
UI
下図のUIを準備します。(Buttonは2つありますが、使用するのはbutton2のみです。)
コード
下記コードを記述します。
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 ClearNode
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
TreeNode root = new TreeNode("Root");
treeView1.Nodes.Add(root);
TreeNode child = new TreeNode("child1");
root.Nodes.Add(child);
for (int i = 0; i < 3; i++) {
child.Nodes.Add(new TreeNode("subchild" + i.ToString()));
}
child = new TreeNode("child2");
root.Nodes.Add(child);
for (int i = 0; i < 3; i++) {
child.Nodes.Add(new TreeNode("subchild" + i.ToString()));
}
child = new TreeNode("child3");
root.Nodes.Add(child);
for (int i = 0; i < 3; i++) {
child.Nodes.Add(new TreeNode("subchild" + i.ToString()));
}
}
private void button2_Click(object sender, EventArgs e)
{
TreeNode tn = treeView1.Nodes[0].Nodes[1];
tn.Nodes.Clear();
}
}
}
解説
Loadイベント
Loadイベントはプログラム実行時にTreeViewにノードを追加する処理です。ノードの追加については「
ルートノードの追加」や「子ノードの追加」の記事を参照してください。
button1
TreeNode tn = treeView1.Nodes[0].Nodes[1];
にて、最初のルートノードの2番目の子ノードを取得します。treeView1.Nodes[0]が最初のルートノードを示しています。そのあとに続く.Nodes[1]が2番目の子ノードを表します。
tn.Nodes.Clear();
TreeNodeのClear()メソッドを呼び出すことで、そのノードが持つ子ノードを削除できます。
実行結果
プロジェクトを実行します。下図のウィンドウが表示されます。
TreeViewのノードを展開すると下図の状態となります。
button2を押します。最初のルートノードの2番目の子ノードが持つ子ノードがすべて削除されました。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用