SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ComponentZine(ComponentOne)(AD)

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

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

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

次のページ
TreeView for WinFormsの特徴[3]

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
ComponentZine(ComponentOne)連載記事一覧

もっと読む

この記事の著者

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

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10384 2018/02/02 16:39

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング