TreeView for WinFormsの特徴[2]
列ヘッダーの非表示
列ヘッダーの表示・非表示を切り替えることができます。
列ヘッダーの表示・非表示を切り替えるにはShowColumnHeadersプロパティにtrue(表示)またはfalse(非表示)を指定します。
ノードのドラッグ&ドロップ
各ノードのドラッグ&ドロップもプロパティの変更で実現できます。
C1TreeViewのAllowDropとEnableDragDropをtrueに設定します。
データ連結
配列やコレクションデータを利用して、ノードを生成することができます。
例えば、以下のような学校のクラスを表すクラスがあったとします。
public class Class { // クラス名 private string _name; public string name { get { return _name; } set { _name = value; } } }
1組、2組といったクラスをコレクションで表現し、C1TreeViewにデータ連結します。
List<Class> classList = new List<Class>(); classList.Add(new Class() { name = "1組"}); classList.Add(new Class() { name = "2組" }); classList.Add(new Class() { name = "3組" }); // データソースとしてclassListを指定する c1TreeView1.DataSource = classList; // フィールド名にnameプロパティを使用する c1TreeView1.Columns[0].DisplayFieldName = "name";
プログラムを実行すると以下のようにノードが表示されます。
階層化データの連結
先ほどのクラス名を表示したノードの下に、生徒名を表示させる階層構造を持ったデータを連結することもできます。
クラスと生徒は以下のように定義されています。
public class Class { // クラス名 private string _name; public string name { get { return _name; } set { _name = value; } } private BindingList<Student> _studentList; public BindingList<Student> studentList { get { return _studentList; } set { _studentList = value; } } } public class Student { private string _name; public string name { get { return _name; } set { _name = value; } } public override string ToString() { return name; } }
C1TreeViewに連結するコードは以下です。
List<Class> classList = new List<Class>(); // クラスとクラスに所属する生徒のコレクションを作成する Class class1 = new Class() { name = "1組" }; class1.studentList = new BindingList<Student>(); class1.studentList.Add(new Student() { name = "山田" }); class1.studentList.Add(new Student() { name = "田中" }); classList.Add(class1); Class class2 = new Class() { name = "2組" }; class2.studentList = new BindingList<Student>(); class2.studentList.Add(new Student() { name = "西村" }); classList.Add(class2); classList.Add(new Class() { name = "3組" }); // データソースとしてclassListを指定する c1TreeView1.DataSource = classList; // フィールド名にnameプロパティを使用する c1TreeView1.Columns[0].DisplayFieldName = "name"; // データメンバーにstudentListを指定 c1TreeView1.DataMember = "\\studentList";