ツリービューの構成要素を変更する
ツリービューにノードを追加したり削除したり、子ノードを追加したり削除したりするサンプルを検討する。
参考にするのは、IronPythonのサンプルの中の、FMsynthというプログラムになる。基になるツリービューは、SharpDevelopのデザイン画面で作成した。
ボタンを3種類設置する。親ノードを作成するボタン、子ノードを作成するボタン、ノードを削除するボタンの3つ。サンプルコードは以下の通り。
import System.Drawing import System.Windows.Forms from System.Drawing import * from System.Windows.Forms import * class MainForm(Form): def __init__(self): self.InitializeComponent() self.numList = 2 #初期のノード数 self.numChild = 3 #初期の子ノード数 def InitializeComponent(self): treeNode11 = System.Windows.Forms.TreeNode("Child-1-1") treeNode12 = System.Windows.Forms.TreeNode("Child-1-2") treeNode13 = System.Windows.Forms.TreeNode("List-1", System.Array[System.Windows.Forms.TreeNode]( [treeNode11, treeNode12])) treeNode14 = System.Windows.Forms.TreeNode("Child-2-2") treeNode15 = System.Windows.Forms.TreeNode("List-2", System.Array[System.Windows.Forms.TreeNode]( [treeNode14])) self._treeView1 = System.Windows.Forms.TreeView() self._button1 = System.Windows.Forms.Button() self._button2 = System.Windows.Forms.Button() self._button3 = System.Windows.Forms.Button() self.SuspendLayout() # # treeView1 # self._treeView1.Dock = System.Windows.Forms.DockStyle.Fill self._treeView1.Location = System.Drawing.Point(0, 0) self._treeView1.Name = "treeView1" treeNode11.Name = "Child-1-1" treeNode11.Text = "Child-1-1" treeNode12.Name = "Child-1-2" treeNode12.Text = "Child-1-2" treeNode13.Name = "List-1" treeNode13.Text = "List-1" treeNode14.Name = "Child-2-1" treeNode14.Text = "Child-2-2" treeNode15.Name = "List-2" treeNode15.Text = "List-2" self._treeView1.Nodes.AddRange(System.Array[System.Windows.Forms.TreeNode]( [treeNode13, treeNode15])) self._treeView1.Size = System.Drawing.Size(284, 262) self._treeView1.TabIndex = 0 # # button1 # self._button1.Location = System.Drawing.Point(136, 148) self._button1.Name = "button1" self._button1.Size = System.Drawing.Size(124, 23) self._button1.TabIndex = 1 self._button1.Text = "Add List" self._button1.UseVisualStyleBackColor = True self._button1.Click += self.Button1Click # # button2 # self._button2.Location = System.Drawing.Point(136, 177) self._button2.Name = "button2" self._button2.Size = System.Drawing.Size(124, 23) self._button2.TabIndex = 2 self._button2.Text = "Add Child" self._button2.UseVisualStyleBackColor = True self._button2.Click += self.Button2Click # # button3 # self._button3.Location = System.Drawing.Point(136, 206) self._button3.Name = "button3" self._button3.Size = System.Drawing.Size(124, 23) self._button3.TabIndex = 3 self._button3.Text = "Remove Source" self._button3.UseVisualStyleBackColor = True self._button3.Click += self.Button3Click # # MainForm # self.ClientSize = System.Drawing.Size(284, 262) self.Controls.Add(self._button3) self.Controls.Add(self._button2) self.Controls.Add(self._button1) self.Controls.Add(self._treeView1) self.Name = "MainForm" self.Text = "test" self.ResumeLayout(False) def Button1Click(self, sender, e): # 親ノードを追加する self.numList += 1 n = self._treeView1.Nodes.Add("New List") self._treeView1.SelectedNode = n n.Text = "List-" + str(self.numList) def Button2Click(self, sender, e): # 子ノードを追加する self.numChild += 1 if self._treeView1.SelectedNode == None: return n = self._treeView1.SelectedNode.Nodes.Add("New Child") self._treeView1.SelectedNode.Expand() n.Text = "Child-" + str(self.numChild) def Button3Click(self, sender, e): # ノードを削除する if self._treeView1.SelectedNode == None: return self._treeView1.Nodes.Remove(self._treeView1.SelectedNode)
実行結果は以下のようになる。
▲起動画面
▲ボタンを押してList-3を加えた
▲Child-1-2の下に子ノードを加えたい
▲子ノードのChild-4が加えられた
▲ノードを消していく。ほとんど消えた