CodeZine(コードジン)

特集ページ一覧

TreeView for WinFormsで高機能なツリービューを実現

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2017/09/05 14:00

目次

TreeView for WinFormsの特徴[2]

列ヘッダーの非表示

 列ヘッダーの表示・非表示を切り替えることができます。

列ヘッダーの表示非表示を切り替える
列ヘッダーの表示非表示を切り替える

 列ヘッダーの表示・非表示を切り替えるにはShowColumnHeadersプロパティにtrue(表示)またはfalse(非表示)を指定します。

ShowColumnHeadersプロパティ
ShowColumnHeadersプロパティ

ノードのドラッグ&ドロップ

 各ノードのドラッグ&ドロップもプロパティの変更で実現できます。

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

  • LINEで送る
  • このエントリーをはてなブックマークに追加

あなたにオススメ

著者プロフィール

  • 西村 誠(ニシムラ マコト)

     Microsoft MVP Windows Platform Development。  Flash、PHPの開発経験もあり国産ECサイト構築フレームワーク「EC-CUBE」の公式エバンジェリストでもある。  ブログ:眠るシーラカンスと水底のプログラマー  著書:基礎から学ぶ Windows...

バックナンバー

連載:ComponentZine(ComponentOne)

もっと読む

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5