59
TreeView for WinForms 2018.04.12 更新 グレープシティ株式会社 グレープシティ株式会社

TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

  • Upload
    lynhu

  • View
    297

  • Download
    1

Embed Size (px)

Citation preview

Page 1: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

TreeView for WinForms2018.04.12 更新

グレープシティ株式会社グレープシティ株式会社

Page 2: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

目次

概要 3

主な機能 4

クイックスタート 5

手順 1:アプリケーションへの TreeView の追加 5

手順 2:TreeView のノードの作成 5-8

手順 3:アプリケーションの実行 8

設計時サポート 9

コレクションエディター 9-11

構造と要素 12

列 13

ノード 14

ノードの追加と削除 14-17

ノードの並べ替え 17

ノードの選択 17-19

ノード間の移動 19

チェックボックスの使用 19-21

ノードの編集 21-22

ノードの展開と折りたたみ 22-24

ノードのドラッグアンドドロップ 24-25

カスタムエディター 25-30

カスタムノード 30-38

Searching Nodes 38-39

データ連結 40

TreeView のリストへの連結 40-42

TreeView の階層化データへの連結 42-49

スタイル設定と外観 50

テーマ 50

ツリー線 50-51

右から左のサポート 51-52

ノードのカスタムボタン画像 52-53

展開ボタンとチェックボックスのアイコン 53-54

  TreeView for WinForms

1 Copyright © GrapeCity, Inc. All rights reserved.         

Page 3: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

単一ノードまたはノードセルのスタイル設定 54-55

XML のインポートとエクスポート 56

Integration with Expression Editor 57-58

TreeView for WinForms  

2 Copyright © GrapeCity, Inc. All rights reserved.         

Page 4: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

概要概要

ComponentOne には TreeView for WinForms が導入されています。このコントロールは、インデックス付きエントリ、ディス

ク上のディレクトリ、ドキュメントの見出しなど、階層的な項目リストの表示に役立ちます。TreeView コントロールは、選択や編

集が可能なノードを使用してデータを管理します。ノードを使用して、単純なテキスト、画像のほか、チェックボックスなどの要

素を表示できます。

TreeView コントロールの詳細については、次のリンクを参照してください。

主な機能

クイックスタート

設計時サポート

構造と要素

ノード

データ連結

スタイル設定と外観

XML のインポートとエクスポート

  TreeView for WinForms

3 Copyright © GrapeCity, Inc. All rights reserved.         

Page 5: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

主な機能主な機能

TreeView for WinForms には、次の主な機能があります。

ノード表現ノード表現

ノード項目は、チェックボックス、アイコン、マルチアイコン、テキストなどとして実装できます。

ノードの編集ノードの編集

AllowEditing プロパティを true に設定したら、ノードの選択後に[F2]キーを押すだけで、簡単にノードを編集できま

す。[Esc]キーを押して編集をキャンセルすることもできます。

非連結モード非連結モード

設計時でも実行時でもノードのツリーを手動で作成することができ、これにより、任意のデータを階層形式で表すことが

できます。

連結モード連結モード

TreeView for WinForms を階層的な関係にある複数のテーブルに連結して、階層化データを表示できます。複数の関

連リストではなく、単一リストのような自己参照データにコントロールを連結することもできます。

テーマのサポートテーマのサポート

TreeView for WinForms は C1ThemeController を使用してテーマをサポートします。

ノードの選択とナビゲーションノードの選択とナビゲーション

TreeView は、キーボードとマウスによるノード間の移動をサポートしています。また、1 つまたは複数のノードの選択も

サポートしています。ノードは、設計時と実行時のどちらでも選択できます。複数のノードを連続して、または非連続に

選択することができます。

設計時サポート設計時サポート

TreeView では、スマートタグやコンテキストメニューを使用して、設計フォームからコレクションエディターに直接アクセ

スできます。コレクションエディターでは、コードを記述せずにノードや列の追加、削除を行うことができます。

ノードの展開ノードの展開

必要に応じて、ツリー内のノードを 1 つまたはすべて展開することができます。また、TreeView レベルで ExpandAll メソッドを使用して、ツリーを 1 回の操作で完全に展開することもできます。Collapsing イベントをキャンセルすることで、

展開したツリーをエンドユーザーが折りたたむことができないようにすることもできます。

TreeView for WinForms  

4 Copyright © GrapeCity, Inc. All rights reserved.         

Page 6: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

クイックスタートクイックスタート

このクイックスタートでは、デザイナを使用して、または .NET プログラミングにより、単純な TreeView アプリケーションを作成

する方法を示します。

TreeView for WinForms をすばやく体験するには、次の手順を実行します。

1. アプリケーションへの TreeView の追加

2. TreeView のノードの作成

3. アプリケーションの実行

手順手順 1:アプリケーションへの:アプリケーションへの TreeView の追加の追加

TreeView コントロールをアプリケーションに追加するには、次の手順に従います。

1. 新しい Windows フォームアプリケーションフォームアプリケーションを作成します。

2. デザインデザインビューで、C1TreeView コントロールをツールボックスからフォームにドラッグアンドドロップします。

TreeView コントロールが表示され、デフォルトで Column1 が追加されます。

3. スマートタグスマートタグをクリックし、[親コンテナにドッキングする][親コンテナにドッキングする]を選択します。

これで、アプリケーションに TreeView コントロールを追加できました。

手順手順 2::TreeView のノードの作成のノードの作成

デザイナを使用するか、アプリケーションのコードを使用して、TreeView にノードを作成できます。

デザイナの使用デザイナの使用

デザイナを使用して TreeView にノードを作成するには、次の手順に従います。

1. スマートタグスマートタグをクリックし、[列の編集[列の編集...]]を選択します。

C1TreeColumn コレクションコレクション エディターエディターが表示されます。

2. Name フィールドと HeaderText フィールドに該当する名前とヘッダーテキストをそれぞれ入力します。

  TreeView for WinForms

5 Copyright © GrapeCity, Inc. All rights reserved.         

Page 7: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

3. C1TreeColumn コレクションコレクション エディターエディターを閉じます。

4. スマートタグをクリックし、[ノードの編集[ノードの編集...]]を選択します。

ツリーノードツリーノード エディターエディターが表示されます。

5. [追加][追加]をクリックして、最上位のノードを作成します。

6. Value プロパティでノードのカスタムラベルを指定します。

7. [子の追加][子の追加] をクリックして、選択したノードに子ノードを追加します。

8. Value プロパティで子ノードのカスタムラベルを指定します。

9. 必要に応じて、アプリケーションで手順 7 ~ 10 を繰り返します。

TreeView for WinForms  

6 Copyright © GrapeCity, Inc. All rights reserved.         

Page 8: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

10. [[OK]]をクリックして変更を保存します。

コードの使用コードの使用

プログラムによって TreeView にノードを作成するには、次の手順に従います。

1. ノードの新しいインスタンスを作成します。

2. TreeView ノードコレクションに親ノードを追加します。

3. 親ノードの値を設定します。

Visual Basic

' ノードの新しいインスタンスを作成します。Dim node1 As New C1.Win.TreeView.C1TreeNode()Dim node2 As New C1.Win.TreeView.C1TreeNode()

' 親ノードをTreeViewノードコレクションに追加します。C1TreeView1.Nodes.Add(node1)

' 親ノードの値を設定します。node1.SetValue("レポート")

C#// ノードの新しいインスタンスを作成します。C1.Win.TreeView.C1TreeNode node1 = new C1.Win.TreeView.C1TreeNode();C1.Win.TreeView.C1TreeNode node2 = new C1.Win.TreeView.C1TreeNode();

// 親ノードをTreeViewノードコレクションに追加します。c1TreeView1.Nodes.Add(node1);

// 親ノードの値を設定します。node1.SetValue("レポート", 0);

  TreeView for WinForms

7 Copyright © GrapeCity, Inc. All rights reserved.         

Page 9: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

4. 子ノードを親ノードに追加します。

5. 子ノードの値を設定します。

Visual Basic

' 親ノードに子ノードを追加します。node1.Nodes.Add(node2)

'子ノードの値を設定します。node2.SetValue("五月売上")

C#// 親ノードに子ノードを追加します。node1.Nodes.Add(node2);

//子ノードの値を設定します。node2.SetValue("五月売上", 0);

6. 手順 3 ~ 7 を繰り返して、親ノードと子ノードをさらに追加します。

手順手順 3:アプリケーションの実行:アプリケーションの実行

これで、TreeView にノードを作成できたので、後はアプリケーションを実行するだけです。

アプリケーションを実行すると、次の出力が表示されます。

TreeView for WinForms  

8 Copyright © GrapeCity, Inc. All rights reserved.         

Page 10: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

設計時サポート設計時サポート

TreeView for WinForms の設計時サポートにより、フォームからコレクションエディターに直接アクセスできます。コレクション

エディターの詳細については、「コレクションエディター」を参照してください。

スマートタグスマートタグ

TreeView のスマートタグを使用すると、TreeView 要素の作成においてよく使用される[[C1TreeViewタスク]タスク]にすばやくアクセ

スできます。

ノードの編集ノードの編集:1 回のクリックで ツリーノードツリーノード エディターエディターにアクセスできます。ツリーノード エディターの詳細については、

「コレクションエディター」を参照してください。

列の編集列の編集:1 回のクリックで C1TreeColumn コレクションコレクション エディターエディターにアクセスできます。C1TreeColumn コレクション

エディターの詳細については、「コレクションエディター」を参照してください。

C1TreeView のバージョン情報のバージョン情報:バージョン番号を確認するためのダイアログボックスを表示します。

親コンテナーにドッキングする親コンテナーにドッキングする:TreeView を親コンテナにドッキングします。

コンテキストメニューコンテキストメニュー

コンテキストメニューには、設計時に TreeView コントロールを右クリックしてアクセスできます。このコンテキストメニューは、ス

マートタグと同様に、設計フォームからコレクションエディターに直接アクセスするためのショートカットを提供します。

コレクションエディターコレクションエディター

TreeView for WinForms には、2 つの主要なコレクションエディター、ツリーノードエディターと C1TreeColumn コレクションエ

ディターがあります。

  TreeView for WinForms

9 Copyright © GrapeCity, Inc. All rights reserved.         

Page 11: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

ツリーノードツリーノード エディターエディター

ツリーノード エディターでは、C1TreeView および C1TreeNode の Nodes コレクションに親ノードと子ノードを簡単に追加およ

び削除できます。ツリーノード エディターを使用すると、ノードの動作を変更できるだけでなく、必要に応じてノードの順序を変

更することもできます。

ツリーノード エディターへのアクセス方法は次のとおりです。

スマートタグおよびコンテキストメニューの使用スマートタグおよびコンテキストメニューの使用

詳細については、「設計時サポート」を参照してください。

プロパティウィンドウの使用プロパティウィンドウの使用

プロパティウィンドウから ツリーノードエディターにアクセスするには、次の手順に従います。

1. TreeView コントロールを右クリックします。

コンテキストメニューが表示されます。

2. [プロパティ][プロパティ]を選択します。

3. プロパティプロパティウィンドウで[ノード][ノード]フィールドに移動します。

4. [ノード][ノード]フィールドの横にある省略符ボタンをクリックします。

ツリーノードツリーノード エディターエディターが表示されます。

C1TreeColumn コレクションコレクション エディターエディター

C1TreeColumn コレクション エディターを使用すると、TreeView への列の追加および削除をシームレスに行うことができま

す。このエディターで、追加した列に対して、外観をカスタマイズしたり、動作やデータを変更することもできます。

エディターには、次の方法でアクセスできます。

スマートタグおよびコンテキストメニューの使用スマートタグおよびコンテキストメニューの使用

詳細については、「設計時サポート」を参照してください。

プロパティウィンドウの使用プロパティウィンドウの使用

プロパティウィンドウから C1TreeColumn コレクションエディターにアクセスするには、次の手順に従います。

TreeView for WinForms  

10 Copyright © GrapeCity, Inc. All rights reserved.         

Page 12: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

1. TreeView コントロールを右クリックします。

コンテキストメニューが表示されます。

2. [プロパティ][プロパティ]を選択します。

3. プロパティプロパティウィンドウで[列][列]フィールドに移動します。

4. [列][列]フィールドの横にある省略符ボタンをクリックします。

C1TreeColumn コレクションコレクション エディターエディターが表示されます。

  TreeView for WinForms

11 Copyright © GrapeCity, Inc. All rights reserved.         

Page 13: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

構造と要素構造と要素

TreeView は、ノードと呼ばれる 1 つまたは複数の要素で構成されるツリータイプの WinForms コントロールです。ノードは次

の 3 タイプに分類できます。

他のノードを含む親ノード

別のノードに含まれる子ノード

子ノードを含まないリーフノード

TreeView for WinForms  

12 Copyright © GrapeCity, Inc. All rights reserved.         

Page 14: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

列列

TreeView コントロールには、連結と非連結の 2 種類の列があります。非連結モードの列は、データソースのフィールドには連

結されず、ノードの文字列表現を表示します。連結モードの列は、TreeView のデータソースから列データを取得し、基底の

データを表示します。

デフォルトでは、TreeView には 1 つの列が含まれます。しかし、さまざまな状況で TreeView の Columns コレクションに複数

の列を追加してコントロールを使用することができます。たとえば、複数の列を使用して、いくつかの地域の 2 年間の売上デー

タを表示することができます。

このコントロールでは、C1TreeColumn コレクションエディターを使用して設計時に簡単に列を追加できます。詳細について

は、「コレクションエディター」を参照してください。

コードで列を作成する場合は、C1TreeColumn のインスタンスを作成し、それを C1TreeView の Columns コレクションに追加

します。TreeView の Columns コレクションからすべての列を削除するには、C1TreeColumnCollection の Clear メソッドを使

用します。また、パラメータとして C1TreeColumn 型のインスタンスを受け取る Remove メソッドを使用すると、最初に見つ

かった指定した列をコレクションから削除できます。パラメータとして整数型の列インデックス値を受け取る RemoveAt メソッド

を使用して、指定したインデックスにある列を削除することもできます。

次のコードスニペットは列を作成し、そのヘッダーと名前を指定し、その列を TreeView の Columns コレクションに追加しま

す。

Visual Basic

' Columnsコレクションをクリアします。C1TreeView1.Columns.Clear()

' 列を作成します。Dim Column1 As New C1.Win.TreeView.C1TreeColumn()

' 列ヘッダーに名前を付けます。Column1.HeaderText = "Column1"

' 列に名前を付けます。Column1.Name = "Column1"

' TreeViewの列コレクションに列を追加します。C1TreeView1.Columns.Add(Column1)

C#

// Columnsコレクションをクリアします。c1TreeView1.Columns.Clear();

// 列を作成します。C1.Win.TreeView.C1TreeColumn Column1 = new C1.Win.TreeView.C1TreeColumn();

// 列ヘッダーに名前を付けます。Column1.HeaderText = "Column1";

// 列に名前を付けます。Column1.Name = "Column1";

// TreeViewの列コレクションに列を追加します。c1TreeView1.Columns.Add(Column1);

  TreeView for WinForms

13 Copyright © GrapeCity, Inc. All rights reserved.         

Page 15: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

ノードノード

TreeView では、ノードは階層形式で配置されます。内部的には、C1TreeNode クラスが 1 つのノードを表し、ノードのデータ

へのアクセスを提供し、ノードに対して多くの操作を実行できるようにします。操作には、ノードの追加、削除、並べ替え、編

集、移動、選択などがあります。データをツリー構造で表す TreeView コントロールは、ノードをネストされたコレクションとして

格納します。ノードのコレクションへは、C1TreeView の Nodes プロパティからアクセスできます。コレクション内で、各ノード

は自身の子ノードを持つことができます。この子ノードへは、C1TreeNode の Nodes プロパティからアクセスできます。

以下のトピックでは、TreeView for WinForms でノードを使用するさまざまな方法を説明します。

ノードの追加と削除

ノードの並べ替え

ノードの選択

ノード間の移動

チェックボックスの使用

ノードの編集

ノードの展開と折りたたみ

ノードのドラッグアンドドロップ

カスタムエディターの使用

カスタムエディターの使用

ノードの追加と削除ノードの追加と削除

ノードの追加ノードの追加

C1TreeNodeCollection クラスでは、TreeView にノードを追加するために Add メソッドと Insert メソッドが提供されていま

す。親ノードを追加するには、C1TreeView クラスの Nodes コレクションで、この 2 つのメソッドのいずれかを使用します。 親ノードに子ノード、または子ノードに子ノードを追加するには、C1TreeNode クラスの Nodes コレクションで、Add メソッドと

Insert メソッドのいずれかを使用します。

次のコードスニペットは、Add メソッドを使用して TreeView コントロールにノードを追加する方法を示しています。

Visual Basic

' 親ノードを作成しますDim parentNode1 As New C1.Win.TreeView.C1TreeNode()Dim parentNode2 As New C1.Win.TreeView.C1TreeNode()

' TreeViewノードコレクションに親ノードを追加します。C1TreeView1.Nodes.Add(parentNode1)C1TreeView1.Nodes.Add(parentNode2)

' 新ノードの値を設定します。parentNode1.SetValue("新コード1", 0)parentNode2.SetValue("新コード2", 0)

' 子ノードを作成します。Dim childNode1 As New C1.Win.TreeView.C1TreeNode()Dim childNode2 As New C1.Win.TreeView.C1TreeNode()

' 子ノードを親ノードのNodesコレクションに追加します。parentNode1.Nodes.Add(childNode1)parentNode2.Nodes.Add(childNode2)

' 子ノードの値を設定します。childNode1.SetValue("子ノード1", 0)

TreeView for WinForms  

14 Copyright © GrapeCity, Inc. All rights reserved.         

Page 16: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

childNode2.SetValue("子ノード2", 0)

C#

// 新ノードを作成します。C1.Win.TreeView.C1TreeNode parentNode1 = new C1.Win.TreeView.C1TreeNode();C1.Win.TreeView.C1TreeNode parentNode2 = new C1.Win.TreeView.C1TreeNode();

// TreeViewノードコレクションに親ノードを追加します。c1TreeView1.Nodes.Add(parentNode1);c1TreeView1.Nodes.Add(parentNode2);

// 新ノードの値を設定します。parentNode1.SetValue("新コード1", 0);parentNode2.SetValue("新コード2", 0);

// 子ノードを作成します。C1.Win.TreeView.C1TreeNode childNode1 = new C1.Win.TreeView.C1TreeNode();C1.Win.TreeView.C1TreeNode childNode2 = new C1.Win.TreeView.C1TreeNode();

// 子ノードを親ノードのNodesコレクションに追加します。parentNode1.Nodes.Add(childNode1);parentNode2.Nodes.Add(childNode2);

// 子ノードの値を設定します。childNode1.SetValue("子ノード1", 0);childNode2.SetValue("子ノード2", 0);

次の図に、ノード追加後のツリービューを示します。

次のコードスニペットは、Insert メソッドを使用して TreeView コントロールにノードを追加する方法を示しています。

Visual Basic

' 3番目の親ノードを作成します。Dim parentNode3 As New C1.Win.TreeView.C1TreeNode()

' TreeViewノードコレクションに3番目の親ノードを挿入します。C1TreeView1.Nodes.Insert(2, parentNode3)

' 3番目の親ノードの値を設定します。parentNode3.SetValue("新コード3", 0)

' 3番目の子ノードを作成します。Dim childNode3 As New C1.Win.TreeView.C1TreeNode()

' 3番目の子ノードを3番目の親ノードのNodesコレクションに追加します。parentNode3.Nodes.Insert(0, childNode3)

' 3番目子ノードの値を設定します。childNode3.SetValue("子ノード3", 0)

C#

  TreeView for WinForms

15 Copyright © GrapeCity, Inc. All rights reserved.         

Page 17: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

// 3番目の親ノードを作成します。C1.Win.TreeView.C1TreeNode parentNode3 = new C1.Win.TreeView.C1TreeNode();

// TreeViewノードコレクションに3番目の親ノードを挿入します。c1TreeView1.Nodes.Insert(2, parentNode3);

// 3番目の親ノードの値を設定します。parentNode3.SetValue("新コード3", 0); // 3番目の子ノードを作成します。C1.Win.TreeView.C1TreeNode childNode3 = new C1.Win.TreeView.C1TreeNode();

// 3番目の子ノードを3番目の親ノードのNodesコレクションに追加します。parentNode3.Nodes.Insert(0, childNode3);

// 3番目子ノードの値を設定します。childNode3.SetValue("子ノード3", 0);

最終的なツリービューは、次のようになります。

ノードの削除ノードの削除

C1TreeNodeCollection クラスでは、TreeView からノードを削除するために Remove メソッドと RemoveAt メソッドが提供

されています。 この 2 つのメソッドのいずれかを C1TreeView の Nodes コレクションで使用して、TreeView から親ノードを削

除できます。親ノードから子ノード、または子ノードから子ノードを削除するには、2 つのメソッドのいずれかを C1TreeNode のNodes コレクションで使用します。

Remove メソッドと RemoveAt メソッドは、一度に 1 つのノードを削除します。ただし、TreeView、親ノード、または子ノードの

Nodes コレクションからすべてのノードを同時に削除することもできます。それには、C1TreeView または C1TreeNode のNodes コレクションで Clear メソッドを使用します。

次に、これらのメソッドを設定する方法を示すコードスニペットを示します。

Visual Basic

' TreeViewノードコレクションから2番目の親ノードを削除します。C1TreeView1.Nodes.Remove(parentNode2)

' インデックス1のノードを削除します。C1TreeView1.Nodes.RemoveAt(1)

C#

// TreeViewノードコレクションから2番目の親ノードを削除します。c1TreeView1.Nodes.Remove(parentNode2);

// インデックス1のノードを削除します。c1TreeView1.Nodes.RemoveAt(1);

TreeView for WinForms  

16 Copyright © GrapeCity, Inc. All rights reserved.         

Page 18: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

ノード削除後のツリービューは、次のようになります。

ノードの並べ替えノードの並べ替え

TreeView では、C1TreeNodeCollection クラスの Move メソッドを使用して、プログラムからノードを並べ替えることができま

す。Move メソッドは、C1TreeView または C1TreeNode の Nodes コレクションで使用できます。これにより、ノードを元の位

置から新しい位置に移動することができます。Move メソッドは、2 つの整数型のパラメータ、oldIndex と newIndex を受け取

ります。ここで、oldIndex と newIndex は、ノードの元の位置と新しい位置をそれぞれ指定します。ただし、Move メソッドを使

用して子ノードを別の親ノードに移動することはできません。

次のコードスニペットは、Parent1 内で Child1 を index 0 から index 2 に移動します。

Visual Basic

' ノードを元の位置から新しい位置に移動します。parentNode1.Nodes.Move(0, 2)

C#

// ノードを元の位置から新しい位置に移動します。parentNode1.Nodes.Move(0, 2);

次の図に、上記のコードの結果を示します。

ノードの選択ノードの選択

TreeView のノードをさまざまな方法で選択するには、C1TreeView の SelectionMode プロパティを設定する必要がありま

す。SelectionMode プロパティは、C1TreeViewSelectionMode 列挙に含まれる次の値を受け取ります。

Multi:TreeView 内の複数のノード(親または子)を選択できます。複数のノードを連続して、または非連続に選択する

ことができます。複数のノードを連続して選択するには、[Shift]キーを押しながらノードをクリックします。複数のノード

を非連続に選択するには、[Ctrl]キーを押しながらノードをクリックします。

MultiSibling:[Shift]キーまたは[Ctrl]キーを使用して、連続してまたは非連続に複数のノードを選択できます。ただ

し、選択できるノードは、1 つの親ノード内に限られます。

None:TreeView 内のどのノードも選択できません。

Single(デフォルト値)(デフォルト値):TreeView 内のノード(親または子)を一度に 1 つだけ選択できます。

次に、SelectionMode プロパティを設定するサンプルのコードスニペットを示します。

  TreeView for WinForms

17 Copyright © GrapeCity, Inc. All rights reserved.         

Page 19: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

Visual Basic

' SelectionModeプロパティをMultiに設定します。C1TreeView1.SelectionMode = C1.Win.TreeView.C1TreeViewSelectionMode.Multi

C#

// SelectionModeプロパティをMultiに設定します。c1TreeView1.SelectionMode = C1.Win.TreeView.C1TreeViewSelectionMode.Multi;

連続して選択連続して選択

非連続に選択非連続に選択

C1TreeNode の Selected プロパティを true に設定して、ノードを 1 つ選択することもできます。

C1Treeview の SelectedMode プロパティが None に設定されている場合、C1TreeNode の Selected プロパティは

適用されません。

次のコードスニペットは、このプロパティの設定方法を示します。

Visual Basic

TreeView for WinForms  

18 Copyright © GrapeCity, Inc. All rights reserved.         

Page 20: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

' 最初の親ノードのSelectedプロパティを有効にします。C1TreeView1.Nodes(0).Selected = True

C#

// 最初の親ノードのSelectedプロパティを有効にします。c1TreeView1.Nodes[0].Selected = true;

このプロパティを設定したノードは、次のように選択されます。

ノード間の移動ノード間の移動

TreeView では、マウスとキーボードによるノード間の移動がサポートされています。

マウスによる移動マウスによる移動

次の表に、TreeView でノード間を移動するためのアクションと、対応するマウスコマンドを示します。

アクションアクション マウスコマンドマウスコマンド

ノードの展開 ノード名の左側にあるプラス記号をクリックします。

ノードの折りたたみ ノード名の左側にあるマイナス記号をクリックします。

ノードの選択 ノード名をクリックします。

キーボードによる移動キーボードによる移動

次の表に、TreeView でノード間を移動する際に使用するアクションと、関連するキーを示します。

アクションアクション キーボードコマンドキーボードコマンド

ノードを上に移動 [↑]キー

ノードを下に移動 [↓]キー

複数ノードの選択 マウス +[Ctrl](非連続選択)/マウス +[Shift](連続選択)

チェックボックスの使用チェックボックスの使用

デフォルトでは、TreeView はノードの横にチェックボックスを表示しません。TreeView でノードの横にチェックボックスを表示す

  TreeView for WinForms

19 Copyright © GrapeCity, Inc. All rights reserved.         

Page 21: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

るには、C1TreeView クラスの CheckBoxes プロパティを true に設定します。

次のコードスニペットでは、CheckBoxes プロパティを設定しています。

Visual Basic

' TreeViewのチェックボックスを有効にするようにCheckBoxプロパティを設定します。C1TreeView1.CheckBoxes = True

C#

// TreeViewのチェックボックスを有効にするようにCheckBoxプロパティを設定します。c1TreeView1.CheckBoxes = true;

ノードの横のチェックボックスは、C1TreeNode の Checked プロパティを true に設定することでオンにできます。ノードの

チェックボックスの状態を変更することもできます。それには、C1TreeNode の CheckState プロパティを

System.Windows.Forms の CheckState 列挙に含まれる値(Checked、Indeterminate、Unchecked)のいずれかに設定

します。

さらに、C1TreeNode の Check メソッドまたは Uncheck メソッドを使用して、ノードのチェックボックスの状態を変更できま

す。これらのメソッドは、Boolean 型のパラメータ allChildrens を受け取ります。この allChildrens パラメータは、ノード内の

すべての子ノードのチェックボックスをオンまたはオフにするかどうかを決定します。C1TreeView では CheckAll メソッドと

UncheckAll メソッドが提供されており、これらを使用して、ノードの横のすべてのチェックボックスをオンまたはオフにすること

ができます。さらに、これらのメソッドを使用して、ノードを再帰的にオンにすることもできます。この場合、親ノードがオンになる

と、その下にあるすべての子ノードが再帰的にオンになります。

次のコードスニペットを参照してください。

Visual Basic

' 親ノードをChecked状態に設定します。C1TreeView1.Nodes(0).CheckState = CheckState.CheckedC1TreeView1.Nodes(1).CheckState = CheckState.Checked

' 子ノードをChecked状態に設定します。parentNode1.Nodes(1).Check()parentNode1.Nodes(4).Check()parentNode2.Nodes(2).Check()parentNode2.Nodes(2).CheckState = CheckState.Checked

C#

TreeView for WinForms  

20 Copyright © GrapeCity, Inc. All rights reserved.         

Page 22: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

// 親ノードをChecked状態に設定します。c1TreeView1.Nodes[0].CheckState = CheckState.Checked;c1TreeView1.Nodes[1].CheckState = CheckState.Checked;

// 子ノードをChecked状態に設定します。parentNode1.Nodes[1].Check();parentNode1.Nodes[4].Check();parentNode2.Nodes[2].Check();parentNode2.Nodes[2].CheckState = CheckState.Checked;

ノードの編集ノードの編集

アプリケーションで TreeView のノードを編集できます。それには、C1TreeView クラスの AllowEditing プロパティを true に設定します。このプロパティのデフォルト値は、false です。

ノードを選択し、[Enter]キーまたは[F2]キーを選択するか、ノード自体をダブルクリックするだけで、ノードの編集を開始する

ことができます。さらに、コードで BeginEdit メソッドを呼び出すことで、プログラムからノードを編集することもできます。これら

のモードのいずれかを使用してノードを編集するには、C1TreeViewEditMode 列挙から C1TreeView クラスの EditMode プロパティを設定する必要があります。

メモメモ:特定のノードのコンテンツを変更できるかどうかを指定する場合は、C1TreeNode の IsReadOnly メソッドを使用

することができます。

次の図に、編集中のノードを示します。

次のコードスニペットは、ノードを編集できるように AllowEditing プロパティを設定し、編集のモードを指定します。

  TreeView for WinForms

21 Copyright © GrapeCity, Inc. All rights reserved.         

Page 23: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

Visual Basic

' AllowEditingプロパティを設定します。C1TreeView1.AllowEditing = True

' EditModeプロパティを設定します。C1TreeView1.EditMode = C1.Win.TreeView.C1TreeViewEditMode.EditOnEnter

C#

// AllowEditingプロパティを設定します。c1TreeView1.AllowEditing = true;

// EditModeプロパティを設定します。c1TreeView1.EditMode = C1.Win.TreeView.C1TreeViewEditMode.EditOnEnter;

ノードの展開と折りたたみノードの展開と折りたたみ

ノードの展開ノードの展開

C1TreeNode クラスでは、1 つのノード(親または子)を展開する Expand メソッドが提供されています。Expand メソッドは、特定のノード

内の子ノードを展開するかどうかを決定する Boolean 値を受け取ります。このメソッドを true に設定すると、選択したノードと一緒にすべ

ての子ノードが展開されます。 false に設定した場合は、メソッドが呼び出されたノードだけが展開されます。次のコードスニペットは、

Expand メソッドを使用して 1 つのノードを展開する方法を示します。

Visual Basic

' 子ノードを展開せずに最初の親ノードを展開します。parentNode1.Expand(False)

C#

// 子ノードを展開せずに最初の親ノードを展開します。parentNode1.Expand(false);

次に示すように、子ノードは展開されずに、親ノードだけが展開されます。

C1TreeNode クラスでは、ノードを一度に 1 つだけ展開する Expanded プロパティも提供されています。

C1TreeView クラスでは、ツリービューを完全に展開する ExpandAll メソッドも提供されています。完全に展開した状態では、次の図に示

すように、親ノードの下にあるすべての子ノードがツリービューに表示されます。

TreeView for WinForms  

22 Copyright © GrapeCity, Inc. All rights reserved.         

Page 24: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

次のコードスニペットは、ExpandAll メソッドを使用してツリービューを完全に展開する方法を示します。

Visual Basic

' ExpandAllメソッドを呼び出します。C1TreeView1.ExpandAll()

C#

// ExpandAllメソッドを呼び出します。c1TreeView1.ExpandAll();

ツリービューが完全に展開されたら、それを折りたたまれないようにすることができます。それには、次のコードに示すよう

に、C1TreeView クラスの Collapsing イベントをキャンセルします。

Visual Basic

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load ' ExpandAllメソッドを呼び出します。 C1TreeView1.ExpandAll()

' Collapsingイベントを処理します。 AddHandler C1TreeView1.Collapsing, AddressOf C1TreeView1_CollapsingEnd Sub

Private Sub C1TreeView1_Collapsing(sender As Object, e As C1TreeViewCancelEventArgs)

' イベントをキャンセルします。 e.Cancel = TrueEnd Sub

C#

private void Form1_Load(object sender, EventArgs e){ // ExpandAllメソッドを呼び出します。 c1TreeView1.ExpandAll();

// Collapsingイベントを処理します。 c1TreeView1.Collapsing += C1TreeView1_Collapsing; ;}

private void C1TreeView1_Collapsing(object sender, C1.Win.TreeView.C1TreeViewCancelEventArgs e){ // イベントをキャンセルします。 e.Cancel = true;}

  TreeView for WinForms

23 Copyright © GrapeCity, Inc. All rights reserved.         

Page 25: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

ノードの折りたたみノードの折りたたみ

C1TreeView クラスでは、ツリービューを完全に折りたたむ CollapseAll メソッドが提供されています。1 つのノード(親または子)を折りた

たむために、C1TreeNode クラスでは Collapse メソッドが提供されています。このメソッドは、特定のノード内の子ノードを折りたたむかど

うかを決定する Boolean 値を受け取ります。このメソッドを true に設定すると、選択したノードと一緒にすべての子ノードが折りたたまれま

す。 false に設定した場合は、メソッドが呼び出されたノードだけが折りたたまれます。

ノードのドラッグアンドドロップノードのドラッグアンドドロップ

TreeView では、同じツリービュー内および複数のツリービュー間でのドラッグアンドドロップ操作がサポートされています。

ツリービュー内のノードに対してドラッグアンドドロップ操作を行うには、C1TreeView の EnableDragDrop プロパティを trueに設定する必要があります。また、ドロップ操作を行うツリービューに対しては、System.Windows.Forms.Control で提供さ

れる AllowDrop プロパティを true に設定する必要があります。複数のツリービューに対してドラッグアンドドロップ操作を有

効にするには、ツリービューごとに EnableDragDrop プロパティを true に設定する必要があることに注意してください。

C1TreeView クラスでは、ノードがドラッグされたときに発生する ItemDrag イベントが提供されています。このイベントを処理

し、C1TreeViewItemDragEventArgs クラスで提供される DraggedData プロパティを使用することで、ドラッグされている

データを取得できます。さらに、Node プロパティを使用して、ドラッグされているノードも取得できます。

次のコードスニペットを参照してください。

Visual Basic

'EnableDragDropプロパティを設定します。C1TreeView1.EnableDragDrop = True

'AllowDropプロパティを設定します。C1TreeView1.AllowDrop = True

C#

// EnableDragDropプロパティを設定します。c1TreeView1.EnableDragDrop = true;

// AllowDropプロパティを設定します。c1TreeView1.AllowDrop = true;

ドラッグ中ドラッグ中

ドロップ後ドロップ後

TreeView for WinForms  

24 Copyright © GrapeCity, Inc. All rights reserved.         

Page 26: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

カスタムエディターカスタムエディター

デフォルトでは、TreeView のノードの編集にはテキストボックスエディターが使用されます。ただし、必要な場合はいつでも、デ

フォルトのエディターをカスタムエディターに置き換えることができます。C1TreeColumn の Editor プロパティを使用して、ノード

のカスタムエディターを列ごとに指定できます。さらに、C1TreeViewEditorType 列挙から EditorType プロパティを設定して、

ノードエディターのタイプを設定することができます。

次の図に、デフォルトのテキストボックスエディタとカスタムテキストボックスエディターの両方を示します。

次のコードスニペットは、エディタのサンプルデータを提供するクラス EditorsData を作成します。

Visual Basic

Imports System.ComponentModel

Namespace SamplesData Public Class EditorsData Public Property TextBoxValue() As Object Get Return m_TextBoxValue End Get Set m_TextBoxValue = Value End Set End Property Private m_TextBoxValue As Object

Public Property Collection() As BindingList(Of EditorsData) Get Return m_Collection End Get Set

  TreeView for WinForms

25 Copyright © GrapeCity, Inc. All rights reserved.         

Page 27: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

m_Collection = Value End Set End Property Private m_Collection As BindingList(Of EditorsData)

Public Sub New() Collection = New BindingList(Of EditorsData)() End Sub

Public Shared Function GetData() As BindingList(Of EditorsData) Dim data = New BindingList(Of EditorsData)() For i As Integer = 0 To 4 data.Add(New EditorsData() With { Key.TextBoxValue = i }) For j As Integer = 0 To 4 data(i).Collection.Add(New EditorsData() With { Key.TextBoxValue = i + j }) Next Next

Return data End Function End Class

C#

using System.ComponentModel;

namespace SamplesData{ public class EditorsData { public object ComboBoxValue { get; set; }

public object TextBoxValue { get; set; }

public bool CheckBoxValue { get; set; }

public BindingList<EditorsData> Collection { get; set; }

public EditorsData() { Collection = new BindingList<EditorsData>(); }

public static BindingList<EditorsData> GetData() { var data = new BindingList<EditorsData>(); for (int i = 0; i < 5; i++) { data.Add(new EditorsData() { CheckBoxValue = true, TextBoxValue = i, ComboBoxValue = i });

TreeView for WinForms  

26 Copyright © GrapeCity, Inc. All rights reserved.         

Page 28: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

for (int j = 0; j < 5; j++) { data[i].Collection.Add(new EditorsData() { CheckBoxValue = false, TextBoxValue = i + j, ComboBoxValue = i + j }); } }

return data; } }}

次のコードスニペットは、デフォルトのテキストボックスエディタに基づいて、カスタムテキストボックスエディターを作成するクラス

CustomTextBox を作成します。

Visual Basic

Imports C1.Win.TreeView

Public Class CustomTextBox Inherits TextBox Implements IC1TreeEditor Public Function C1EditorGetValue() As Object Return Text End Function

Public Sub C1EditorInitialize(value As Object, attrs As IDictionary) BorderStyle = BorderStyle.FixedSingle AutoSize = True TabStop = True

If attrs.Contains("AcceptReturn") Then AcceptsReturn = CBool(attrs("AcceptReturn")) End If If attrs.Contains("AcceptTab") Then AcceptsTab = CBool(attrs("AcceptTab")) End If If attrs.Contains("BackColor") Then BackColor = DirectCast(attrs("BackColor"), Color) End If If attrs.Contains("Font") Then Font = DirectCast(attrs("Font"), Font) End If If attrs.Contains("ForeColor") Then ForeColor = DirectCast(attrs("ForeColor"), Color) End If If attrs.Contains("DisabledForeColor") Then ForeColor = DirectCast(attrs("DisabledForeColor"), Color) End If If attrs.Contains("MaxLength") Then MaxLength = CInt(attrs("MaxLength")) End If If attrs.Contains("ReadOnly") Then [ReadOnly] = CBool(attrs("ReadOnly")) End If If attrs.Contains("WordWrap") Then WordWrap = CBool(attrs("WordWrap")) End If

Text = value.ToString() End Sub

  TreeView for WinForms

27 Copyright © GrapeCity, Inc. All rights reserved.         

Page 29: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

Public Function C1EditorKeyDownFinishEdit(e As KeyEventArgs) As Boolean If e.KeyData = Keys.Enter Then Return True End If Return False End Function

Public Sub C1EditorUpdateBounds(rc As Rectangle) Bounds = rc End Sub

Public Function C1EditorValueIsValid() As Boolean Return True End Function

Private Function IC1TreeEditor_C1EditorValueIsValid() As Boolean Implements IC1TreeEditor.C1EditorValueIsValid Throw New NotImplementedException() End Function

Private Sub IC1TreeEditor_C1EditorUpdateBounds(rc As Rectangle) Implements IC1TreeEditor.C1EditorUpdateBounds Throw New NotImplementedException() End Sub

Private Function IC1TreeEditor_C1EditorKeyDownFinishEdit(e As KeyEventArgs) As Boolean Implements IC1TreeEditor.C1EditorKeyDownFinishEdit Throw New NotImplementedException() End Function

Private Sub IC1TreeEditor_C1EditorInitialize(value As Object, attrs As IDictionary) Implements IC1TreeEditor.C1EditorInitialize Throw New NotImplementedException() End Sub

Private Function IC1TreeEditor_C1EditorGetValue() As Object Implements IC1TreeEditor.C1EditorGetValue Throw New NotImplementedException() End FunctionEnd Class

C#

using C1.Win.TreeView;using System.Collections;using System.Drawing;using System.Windows.Forms;

namespace CustomEditors{ public class CustomTextBox : TextBox, IC1TreeEditor { public object C1EditorGetValue() { return Text; }

public void C1EditorInitialize(object value, IDictionary attrs) { BorderStyle = BorderStyle.FixedSingle; AutoSize = true; TabStop = true; BackColor = Color.Blue; WordWrap = true;

TreeView for WinForms  

28 Copyright © GrapeCity, Inc. All rights reserved.         

Page 30: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

if (attrs.Contains("AcceptReturn")) AcceptsReturn = (bool)attrs["AcceptReturn"]; if (attrs.Contains("AcceptTab")) AcceptsTab = (bool)attrs["AcceptTab"]; if (attrs.Contains("BackColor")) BackColor = (Color)attrs["BackColor"]; if (attrs.Contains("Font")) Font = (Font)attrs["Font"]; if (attrs.Contains("ForeColor")) ForeColor = (Color)attrs["ForeColor"]; if (attrs.Contains("DisabledForeColor")) ForeColor = (Color)attrs["DisabledForeColor"]; if (attrs.Contains("MaxLength")) MaxLength = (int)attrs["MaxLength"]; if (attrs.Contains("ReadOnly")) ReadOnly = (bool)attrs["ReadOnly"]; if (attrs.Contains("WordWrap")) WordWrap = (bool)attrs["WordWrap"];

Text = value.ToString(); }

public bool C1EditorKeyDownFinishEdit(KeyEventArgs e) { if (e.KeyData == Keys.Enter) return true; return false; }

public void C1EditorUpdateBounds(Rectangle rc) { Bounds = rc; }

public bool C1EditorValueIsValid() { return true; } }}

次のコードスニペットは、デフォルトのテキストボックスとカスタムテキストボックスをそれぞれ 1 列目と 2 列目のエディターとして

設定します。

Visual Basic

Dim textBox1 As System.Windows.Forms.TextBox = New TextBox()Dim textBox2 As New CustomTextBox()C1TreeView1.AllowEditing = True

C1TreeView1.Columns.Clear()

Dim column1 As New C1.Win.TreeView.C1TreeColumn()Dim column2 As New C1.Win.TreeView.C1TreeColumn()Dim column3 As New C1.Win.TreeView.C1TreeColumn()Dim column4 As New C1.Win.TreeView.C1TreeColumn()

C1TreeView1.Columns.Add(column1)C1TreeView1.Columns.Add(column2)

column1.Name = "clnTextBox"

  TreeView for WinForms

29 Copyright © GrapeCity, Inc. All rights reserved.         

Page 31: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

column1.HeaderText = "テキストボックス"column1.Width = 60column1.DisplayFieldName = "TextBoxValue\TextBoxValue"column1.Editor = textBox1column1.EditorType = C1.Win.TreeView.C1TreeViewEditorType.Text

column2.Name = "cnlCustomTextBox"column2.HeaderText = "カスタムテキストボックス"column2.Width = 90column2.DisplayFieldName = "TextBoxValue\TextBoxValue"column2.Editor = New CustomTextBox()column2.EditorType = C1.Win.TreeView.C1TreeViewEditorType.Text

C1TreeView1.DataMember = "Collection\Collection"C1TreeView1.DataSource = EditorsData.GetData()

C#

System.Windows.Forms.TextBox textBox1 = new TextBox();CustomTextBox textBox2 = new CustomTextBox();c1TreeView1.AllowEditing = true;

C1.Win.TreeView.C1TreeColumn column1 = new C1.Win.TreeView.C1TreeColumn();C1.Win.TreeView.C1TreeColumn column2 = new C1.Win.TreeView.C1TreeColumn();C1.Win.TreeView.C1TreeColumn column3 = new C1.Win.TreeView.C1TreeColumn();C1.Win.TreeView.C1TreeColumn column4 = new C1.Win.TreeView.C1TreeColumn();

c1TreeView1.Columns.Add(column1);c1TreeView1.Columns.Add(column2);

column1.Name = "clnTextBox";column1.HeaderText = "テキストボックス";column1.Width = 60;column1.DisplayFieldName = "TextBoxValue\\TextBoxValue";column1.Editor = textBox1;column1.EditorType = C1.Win.TreeView.C1TreeViewEditorType.Text;

column2.Name = "cnlCustomTextBox";column2.HeaderText = "カスタムテキストボックス";column2.Width = 90;column2.DisplayFieldName = "TextBoxValue\\TextBoxValue";column2.Editor = new CustomTextBox();column2.EditorType = C1.Win.TreeView.C1TreeViewEditorType.Text;

c1TreeView1.DataMember = "Collection\\Collection";c1TreeView1.DataSource = EditorsData.GetData();

カスタムノードカスタムノード

TreeView では、デフォルトのノードの代わりにカスタムノードを作成して表示することができます。カスタムプロパティを追加し

たり、さまざまなカスタマイズを表示することができます(画像の挿入/拡大縮小/配置、境界線の表示、フォントのスタイルと色

のカスタマイズ、サイズの変更など)。TreeView でカスタムノードを設定するには、C1TreeColumn のCustomContentPresenter プロパティを設定します。

次の図に、TreeView のカスタムノードを示します。

TreeView for WinForms  

30 Copyright © GrapeCity, Inc. All rights reserved.         

Page 32: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

TreeView でカスタムノードを作成するには、デフォルトノードをオーバーライドしてカスタムノードに適用されるプロパティとメ

ソッドを定義したカスタムクラスを作成します。カスタムクラスを作成したら、そのインスタンスを初期化し、

CustomContentPresenter プロパティを使用してカスタムノードを設定します。

次のコードスニペットは、カスタムクラスを作成し、カスタムノードの主な要素を定義する方法を示します。

Visual Basic

Public Class CategoryCustomNode Inherits CustomContentPresenter ' レベル 0 Private _name As TextElement Private _description As TextElement Private _img As ImageElement Private _rw As RowPanel ' レベル 1 Private _product As TextElement

Public Sub New() ' レベル 0 ' initテキスト要素 ' name _name = New TextElement() _name.Style = New Style() ' 説明 _description = New TextElement() _description.Style = New Style() _description.Width = 120 ' イメージ要素をを初期化します

  TreeView for WinForms

31 Copyright © GrapeCity, Inc. All rights reserved.         

Page 33: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

_img = New ImageElement() _img.Style = New Style() _img.Size = New Size(70, 50) ' テキスト要素のグリッドを初期化します Dim cp = New ColumnPanel() cp.Children.Add(_name) cp.Children.Add(_description) ' イメージのためにパネルを初期化します _rw = New RowPanel() _rw.Children.Add(cp) _rw.Children.Add(_img) _rw.Style = New Style() _rw.Style.VerticalAlignment = Alignment.Center ' レベル 1 _product = New TextElement() _product.Style = New Style() End Sub

Public Overrides ReadOnly Property ToolTipText() As String Get Return _name.Text End Get End Property

Public Overrides Sub SetStyle(styles As TreeNodeCellStyles) ' レベル 0 ' name _name.Style.Margins = New Thickness(1) _name.Style.Font = New Font("Calibri", 10, FontStyle.Bold) ' 説明 _description.Style.Margins = New Thickness(1) _description.Style.Font = New Font("Calibri", 9, FontStyle.Italic) _description.Style.WordWrap = True ' img _img.Style.ImageScaling = ImageScaling.Scale _img.Style.ImageAlignment = ImageAlignment.CenterCenter ' レベル 1 _product.Style.Font = New Font("Calibri", 10, FontStyle.Bold) _product.Style.Margins = New Thickness(2) _product.Style.HorizontalAlignment = Alignment.Center _product.Style.VerticalAlignment = Alignment.Center End Sub

Public Overrides Sub SetValue(value As Object) If Node.level = 0 Then Dim row = DirectCast(Node.GetValue(), DataSet1.CategoriesRow) _name.Text = row.CategoryName _description.Text = row.Description Dim converter = New ImageConverter() If _img.Image IsNot Nothing Then _img.Image.Dispose() _img.Image = Nothing End If _img.Image = DirectCast(converter.ConvertFrom(row.Picture), Image) ' ルートパネルを設定します Child = _rw Else _product.Text = value.ToString() ' ルート要素を設定します Child = _product End If End SubEnd Class

TreeView for WinForms  

32 Copyright © GrapeCity, Inc. All rights reserved.         

Page 34: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

Public Class ProductCustomNode Inherits CustomContentPresenter ' レベル 0 Private _count As TextElement ' レベル 1 Private _quantityPerUnit As TextElement Private _unitPrice As TextElement Private _unitInStock As TextElement Private _unitsOnOrder As TextElement Private _reorderLevel As TextElement Private _gp As GridPanel Private _eStyle As Style

Public Sub New() ' レベル 0 ' カテゴリでのカウント _count = New TextElement() _count.Style = New Style() _count.Style.Margins = New Thickness(2) ' レベル 1 ' ラベルのスタイル Dim lStyle = New Style() lStyle.HorizontalAlignment = Alignment.Far lStyle.Margins = New Thickness(1) lStyle.Font = New Font("Calibri", 9, FontStyle.Regular) ' 要素スタイル _eStyle = New Style() _eStyle.Margins = New Thickness(1) _eStyle.Font = New Font("Calibri", 9, FontStyle.Regular) ' init要素 _quantityPerUnit = New TextElement(_eStyle.Clone()) _unitPrice = New TextElement(_eStyle.Clone()) _unitInStock = New TextElement(_eStyle.Clone()) _unitsOnOrder = New TextElement(_eStyle.Clone()) _reorderLevel = New TextElement(_eStyle.Clone()) ' テキスト要素のグリッドを初期化します _gp = New GridPanel() _gp.Columns.Add() ' ラベル _gp.Columns(0).Width = 100 _gp.Columns.Add() ' テキスト _gp.Columns(1).Width = 120

_gp.Rows.Add() ' ReorderLevel _gp(0, 0).Element = New TextElement(lStyle, "Reorder level:") _gp(0, 1).Element = _reorderLevel _gp.Rows.Add() ' UnitPrice _gp(1, 0).Element = New TextElement(lStyle, "Unit price:") _gp(1, 1).Element = _unitPrice _gp.Rows.Add() ' QuantityPerUnit _gp(2, 0).Element = New TextElement(lStyle, "Quantity per unit:") _gp(2, 1).Element = _quantityPerUnit

_gp.Columns.Add() ' ラベル _gp.Columns(2).Width = 100 _gp.Columns.Add() ' テキスト

  TreeView for WinForms

33 Copyright © GrapeCity, Inc. All rights reserved.         

Page 35: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

' UnitsInStock _gp(0, 2).Element = New TextElement(lStyle, "Units in stock:") _gp(0, 3).Element = _unitInStock ' UnitsOnOrder _gp(1, 2).Element = New TextElement(lStyle, "Units on order:")

_gp(1, 3).Element = _unitsOnOrder End Sub

Public Overrides ReadOnly Property ToolTipText() As String Get Return String.Empty End Get End Property

Public Overrides Sub SetStyle(styles As TreeNodeCellStyles) ' レベル 0 _count.Style.HorizontalAlignment = Alignment.Center _count.Style.VerticalAlignment = Alignment.Center _count.Style.Font = New Font("Calibri", 11, FontStyle.Bold) ' レベル 1 _unitPrice.Style.Font = New Font(_eStyle.Font, FontStyle.Bold) If _unitInStock.Text = "0" Then _unitInStock.Style.ForeColor = Color.Red _unitInStock.Style.Font = New Font(_eStyle.Font, FontStyle.Bold) End If If _unitsOnOrder.Text = "0" Then _unitsOnOrder.Style.ForeColor = Color.Red _unitsOnOrder.Style.Font = New Font(_eStyle.Font, FontStyle.Bold) End If End Sub

Public Overrides Sub SetValue(value As Object) If Node.level = 0 Then Dim count = If(Node.HasChildren, Node.Nodes.Count, 0) _count.Text = count.ToString() Child = _count Else Dim row = DirectCast(Node.GetValue(), DataSet1.ProductsRow) _quantityPerUnit.Text = row.QuantityPerUnit _unitPrice.Text = row.UnitPrice.ToString("C") _unitInStock.Text = row.UnitsInStock.ToString() _unitsOnOrder.Text = row.UnitsOnOrder.ToString() _reorderLevel.Text = row.ReorderLevel.ToString() Child = _gp End If End SubEnd Class

C#

public class CategoryCustomNode : CustomContentPresenter{ // レベル 0 private TextElement _name; private TextElement _description; private ImageElement _img; private RowPanel _rw; // レベル 1 private TextElement _product;

public CategoryCustomNode() {

TreeView for WinForms  

34 Copyright © GrapeCity, Inc. All rights reserved.         

Page 36: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

// レベル 0 // initテキスト要素 // name _name = new TextElement(); _name.Style = new Style(); // 説明 _description = new TextElement(); _description.Style = new Style(); _description.Width = 120; // イメージ要素をを初期化します。 _img = new ImageElement(); _img.Style = new Style(); _img.Size = new Size(70, 50); // テキスト要素のグリッドを初期化します。 var cp = new ColumnPanel(); cp.Children.Add(_name); cp.Children.Add(_description); // イメージのためにパネルを初期化します。 _rw = new RowPanel(); _rw.Children.Add(cp); _rw.Children.Add(_img); _rw.Style = new Style(); _rw.Style.VerticalAlignment = Alignment.Center; // レベル 1 _product = new TextElement(); _product.Style = new Style(); }

public override string ToolTipText { get { return _name.Text; } }

public override void SetStyle(TreeNodeCellStyles styles) { // レベル 0 // name _name.Style.Margins = new Thickness(1); _name.Style.Font = new Font("Calibri", 10, FontStyle.Bold); // 説明 _description.Style.Margins = new Thickness(1); _description.Style.Font = new Font("Calibri", 9, FontStyle.Italic); _description.Style.WordWrap = true; // img _img.Style.ImageScaling = ImageScaling.Scale; _img.Style.ImageAlignment = ImageAlignment.CenterCenter; // レベル 1 _product.Style.Font = new Font("Calibri", 10, FontStyle.Bold); _product.Style.Margins = new Thickness(2); _product.Style.HorizontalAlignment = Alignment.Center; _product.Style.VerticalAlignment = Alignment.Center; }

public override void SetValue(object value) { if (Node.Level == 0) { var row = (DataSet1.CategoriesRow)Node.GetValue(); _name.Text = row.CategoryName; _description.Text = row.Description;

  TreeView for WinForms

35 Copyright © GrapeCity, Inc. All rights reserved.         

Page 37: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

var converter = new ImageConverter(); if (_img.Image != null) { _img.Image.Dispose(); _img.Image = null; } _img.Image = (Image)converter.ConvertFrom(row.Picture); // ルートパネルを設定します。 Child = _rw; } else { _product.Text = value.ToString(); // ルート要素を設定します。 Child = _product; } }}

public class ProductCustomNode : CustomContentPresenter{ // レベル 0 private TextElement _count; // レベル 1 private TextElement _quantityPerUnit; private TextElement _unitPrice; private TextElement _unitInStock; private TextElement _unitsOnOrder; private TextElement _reorderLevel; private GridPanel _gp; private Style _eStyle;

public ProductCustomNode() { // レベル0 // カテゴリでのカウント _count = new TextElement(); _count.Style = new Style(); _count.Style.Margins = new Thickness(2); // レベル01 // ラベルのスタイル var lStyle = new Style(); lStyle.HorizontalAlignment = Alignment.Far; lStyle.Margins = new Thickness(1); lStyle.Font = new Font("Calibri", 9, FontStyle.Regular); // 要素スタイル _eStyle = new Style(); _eStyle.Margins = new Thickness(1); _eStyle.Font = new Font("Calibri", 9, FontStyle.Regular); // init要素 _quantityPerUnit = new TextElement(_eStyle.Clone()); _unitPrice = new TextElement(_eStyle.Clone()); _unitInStock = new TextElement(_eStyle.Clone()); _unitsOnOrder = new TextElement(_eStyle.Clone()); _reorderLevel = new TextElement(_eStyle.Clone()); // テキスト要素のグリッドを初期化します。 _gp = new GridPanel(); _gp.Columns.Add(); // ラベル _gp.Columns[0].Width = 100; _gp.Columns.Add(); // テキスト _gp.Columns[1].Width = 120;

TreeView for WinForms  

36 Copyright © GrapeCity, Inc. All rights reserved.         

Page 38: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

_gp.Rows.Add(); // ReorderLevel _gp[0, 0].Element = new TextElement(lStyle, "Reorder level:"); _gp[0, 1].Element = _reorderLevel; _gp.Rows.Add(); // UnitPrice _gp[1, 0].Element = new TextElement(lStyle, "Unit price:"); _gp[1, 1].Element = _unitPrice; _gp.Rows.Add(); // QuantityPerUnit _gp[2, 0].Element = new TextElement(lStyle, "Quantity per unit:"); _gp[2, 1].Element = _quantityPerUnit;

_gp.Columns.Add(); // ラベル _gp.Columns[2].Width = 100; _gp.Columns.Add(); // テキスト // UnitsInStock _gp[0, 2].Element = new TextElement(lStyle, "Units in stock:"); _gp[0, 3].Element = _unitInStock; // UnitsOnOrder _gp[1, 2].Element = new TextElement(lStyle, "Units on order:"); _gp[1, 3].Element = _unitsOnOrder;

}

public override string ToolTipText { get { return string.Empty; ; } }

public override void SetStyle(TreeNodeCellStyles styles) { // レベル 0 _count.Style.HorizontalAlignment = Alignment.Center; _count.Style.VerticalAlignment = Alignment.Center; _count.Style.Font = new Font("Calibri", 11, FontStyle.Bold); // レベル 1 _unitPrice.Style.Font = new Font(_eStyle.Font, FontStyle.Bold); if (_unitInStock.Text == "0") { _unitInStock.Style.ForeColor = Color.Red; _unitInStock.Style.Font = new Font(_eStyle.Font, FontStyle.Bold); } if (_unitsOnOrder.Text == "0") { _unitsOnOrder.Style.ForeColor = Color.Red; _unitsOnOrder.Style.Font = new Font(_eStyle.Font, FontStyle.Bold); } }

public override void SetValue(object value) { if (Node.Level == 0) { var count = Node.HasChildren ? Node.Nodes.Count : 0; _count.Text = count.ToString(); Child = _count; } else {

  TreeView for WinForms

37 Copyright © GrapeCity, Inc. All rights reserved.         

Page 39: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

var row = (DataSet1.ProductsRow)Node.GetValue(); _quantityPerUnit.Text = row.QuantityPerUnit; _unitPrice.Text = row.UnitPrice.ToString("C"); _unitInStock.Text = row.UnitsInStock.ToString(); _unitsOnOrder.Text = row.UnitsOnOrder.ToString(); _reorderLevel.Text = row.ReorderLevel.ToString(); Child = _gp; } }}

次のコードスニペットは、CustomContentPresenter プロパティを使用してカスタムノードを設定する方法を示します。

Visual Basic

' カスタムノードを設定します C1TreeView1.Columns(0).CustomContentPresenter = New CategoryCustomNode()C1TreeView1.Columns(1).CustomContentPresenter = New ProductCustomNode()

C#

// カスタムノードを設定します。 c1TreeView1.Columns[0].CustomContentPresenter = new CategoryCustomNode();c1TreeView1.Columns[1].CustomContentPresenter = new ProductCustomNode();

Searching NodesTreeView enables you to search for the nodes matching the specified string. To search for a node in TreeView, youneed to use Search method of C1TreeView class. The Search method takes string as a value, searches for the nodesusing depth-first search and returns the node containing the searched string.

The following image shows the searched node containing “Chai” as input string.

To search for the nodes containing the string you input, use the following code. In this example, we have taken a textbox where you can provide a string to be searched on a button click.

TreeView for WinForms  

38 Copyright © GrapeCity, Inc. All rights reserved.         

Page 40: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

C#

private void Searchbutton_Click(object sender, EventArgs e){ c1TreeView1.Search(textBox1.Text);}

  TreeView for WinForms

39 Copyright © GrapeCity, Inc. All rights reserved.         

Page 41: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

データ連結データ連結

データコンシューマーをデータソースと接続する処理をデータ連結と呼びます。TreeView for WinForms は、非連結モードと連

結モードという 2 つのモードでのデータ連結をサポートしています。

非連結モードでは、TreeView コントロールはどのデータソースにも連結されません。非連結モードでは、デザイナを使用する

か、プログラムで、列とノードを手動で作成する必要があります。設計時に非連結モードでノードを作成する場合は、ツリーノーツリーノー

ドエディタードエディターでノードを追加するだけです。ツリーノードエディターへのアクセス方法については、「コレクションエディター」を参

照してください。非連結モードでプログラムによってノードを作成する場合は、Add メソッドと Insert メソッドを使用します。詳細

については、「ノードの追加と削除」を参照してください。

連結モードでは、TreeView コントロールは、データソースから取得されたデータを使用し、それを親ノードと子ノードの形式で

階層的に表示します。 TreeView は、BindingSource、List、DataView、DataTable、DataSet などのデータソースオブジェクト

や、IBindingList、IList などの所定のインタフェースを実装するオブジェクトをサポートします。

TreeView をデータソースオブジェクトに連結するには、C1TreeView の DataSource プロパティを使用する必要がありま

す。TreeBoundMode プロパティを TreeBoundMode 列挙に含まれる次の値のいずれかに設定することで、TreeView の連結モードのタイプを指定できます。

OneWay:ツリービュー階層の変化後にデータソースを更新しません。

TwoWay:ツリービュー階層の変化後にデータソースを更新します。

データソースを設定したら、C1TreeColumn の DisplayFieldName プロパティを使用して、列に表示するフィールドのリストを

設定できます。

TreeView をさまざまなオブジェクトに連結する方法については、以下のセクションを参照してください。

TreeView のリストへの連結

TreeView の階層化データへの連結

TreeView のリストへの連結のリストへの連結

TreeView は、インデックス値を使用してアクセスできるオブジェクトを含むリストに連結できます。

以下のサンプルコードでは、まずクラス Products を作成し、System.Collections.Generic に属する List<T> のインスタンス

を作成します。次に、TreeView コントロールをリストに連結し、[データ生成][データ生成]ボタンがクリックされたときにリストのデータを階

層形式で表示します。

次のコードスニペットは、クラス Products.cs を作成します。

Visual Basic

Public Class Products

Private _id As Integer Private _description As String Private _price As Single Public Property ID() As Integer Get Return _id End Get Set _id = Value End Set End Property Public Property Description() As String Get Return _description

TreeView for WinForms  

40 Copyright © GrapeCity, Inc. All rights reserved.         

Page 42: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

End Get Set _description = Value End Set End Property Public Property Price() As Single Get Return _price End Get Set _price = Value End Set End Property Public Sub New(id As Integer, description As String, price As Single) _id = id _description = description _price = price End SubEnd Class

C#

public class Products {

private int _id; private string _description; private float _price; public int ID { get { return _id; } set { _id = value; } } public string Description { get { return _description; } set { _description = value; } } public float Price { get { return _price; } set { _price = value; } } public Products(int id, string description, float price) { _id = id; _description = description; _price = price; } }}

次のコードスニペットは、TreeView をリストに連結します。

Visual Basic

' ボタンがクリックされたときにデータを生成します。Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

' リストを作成します。 Dim product As New List(Of Products)()

  TreeView for WinForms

41 Copyright © GrapeCity, Inc. All rights reserved.         

Page 43: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

' リストにオブジェクトを追加します。 product.Add(New Products(567, "自転車", 5)) product.Add(New Products(456, "自動車", 5000)) product.Add(New Products(789, "オートバイ", 1500))

' TreeViewをリストにバインドします。 C1TreeView1.DataSource = product

' 列に表示するようにフィールドを設定します。 C1TreeView1.Columns(0).DisplayFieldName = "Description\Description"End Sub

C#

// ボタンがクリックされたときにデータを生成します。private void button1_Click(object sender, EventArgs e){ // リストを作成します。 List<Products> product = new List<Products>();

// リストにオブジェクトを追加します。 product.Add(new Products(567, "自転車", 5)); product.Add(new Products(456, "自動車", 5000)); product.Add(new Products(789, "オートバイ", 1500));

// TreeViewをリストにバインドします。 c1TreeView1.DataSource = product;

// 列に表示するようにフィールドを設定します。 c1TreeView1.Columns[0].DisplayFieldName = "Description\\Description";}

コードの実行後に[データ生成]ボタンをクリックすると、次のように出力されます。

TreeView の階層化データへの連結の階層化データへの連結

TreeView の重要な機能の 1 つは、階層化データに連結して、データを親ノードと子ノードの関係として表示できることです。

C1TreeView クラスでは、TreeView コントロールのデータソースを指定する DataSource プロパティが提供されています。このク

ラスでは、データソース内の特定のレコードの名前を指定する DataMember プロパティも提供されています。

次のサンプルコードは、さまざまなクラスを使用して作成された階層化データソースに TreeView コントロールを連結しています。

次のコードスニペットは、クラス Product を作成します。

TreeView for WinForms  

42 Copyright © GrapeCity, Inc. All rights reserved.         

Page 44: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

Visual Basic

'クラスを作成します。Public Class Product Public Property ID() As Guid Get Return m_ID End Get Set m_ID = Value End Set End Property Private m_ID As Guid Public Property Name() As String Get Return m_Name End Get Set m_Name = Value End Set End Property Private m_Name As String Public Property Price() As Double Get Return m_Price End Get Set m_Price = Value End Set End Property Private m_Price As Double

Public Sub New(name__1 As String, price__2 As Double) ID = Guid.NewGuid() Name = name__1 Price = price__2 End Sub

Public Overrides Function ToString() As String Return Name End FunctionEnd Class

C#

// クラスを作成します。public class Product{ public Guid ID { get; set; } public string Name { get; set; } public double Price { get; set; }

public Product(string name, double price) { ID = Guid.NewGuid(); Name = name; Price = price; } public override string ToString() { return Name; }}

次のコードスニペットは、クラス ProductsGroup を作成します。

  TreeView for WinForms

43 Copyright © GrapeCity, Inc. All rights reserved.         

Page 45: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

Visual Basic

'クラスを作成します。Public Class ProductsGroup

Public Property ID() As Guid Get Return m_ID End Get Set m_ID = Value End Set End Property Private m_ID As Guid Public Property Name() As String Get Return m_Name End Get Set m_Name = Value End Set End Property Private m_Name As String Public Property Products() As BindingList(Of Product) Get Return m_Products End Get Set m_Products = Value End Set End Property Private m_Products As BindingList(Of Product) Public ReadOnly Property CountOfProducts() As Integer Get Return Products.Count End Get End Property

Public Sub New(name__1 As String) ID = Guid.NewGuid() Name = name__1 Products = New BindingList(Of Product)() End Sub

Public Overrides Function ToString() As String Return Name End FunctionEnd Class

C#

// クラスを作成します。public class ProductsGroup{ public Guid ID { get; set; } public string Name { get; set; } public BindingList<Product> Products { get; set; } public int CountOfProducts { get { return Products.Count; } }

public ProductsGroup(string name) {

TreeView for WinForms  

44 Copyright © GrapeCity, Inc. All rights reserved.         

Page 46: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

ID = Guid.NewGuid(); Name = name; Products = new BindingList<Product>(); } public override string ToString() { return Name; }}

次のコードは、クラス Store を作成します。

Visual Basic

'クラスを作成します。 Public Property ID() As Guid Get Return m_ID End Get Set m_ID = Value End Set End Property Private m_ID As Guid Public Property Name() As String Get Return m_Name End Get Set m_Name = Value End Set End Property Private m_Name As String Public Property ProductsGroups() As BindingList(Of ProductsGroup) Get Return m_ProductsGroups End Get Set m_ProductsGroups = Value End Set End Property Private m_ProductsGroups As BindingList(Of ProductsGroup) Public ReadOnly Property CountOfProducts() As Integer Get Dim count As Integer = 0 For Each pg As Object In ProductsGroups count += pg.CountOfProducts Next Return count End Get End Property

Public Sub New(name__1 As String) ID = Guid.NewGuid() Name = name__1 ProductsGroups = New BindingList(Of ProductsGroup)() End Sub

Public Overrides Function ToString() As String Return Name End FunctionEnd Class

C#

  TreeView for WinForms

45 Copyright © GrapeCity, Inc. All rights reserved.         

Page 47: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

// クラスを作成します。public class Store{ public Guid ID { get; set; } public string Name { get; set; } public BindingList<ProductsGroup> ProductsGroups { get; set; } public int CountOfProducts { get { int count = 0; foreach (var pg in ProductsGroups) count += pg.CountOfProducts; return count; } }

public Store(string name) { ID = Guid.NewGuid(); Name = name; ProductsGroups = new BindingList<ProductsGroup>(); }

public override string ToString() { return Name; }}

次のコードスニペットは、クラス StoreCollection を作成します。

Visual Basic

'クラスを作成します。Public Class StoreCollection Inherits BindingList(Of Store) Public Shared Function GetData() As StoreCollection Dim stores = New StoreCollection()

stores.Add(New Store("Pear Inc.")) stores(0).ProductsGroups.Add(New ProductsGroup("Mobile phones")) stores(0).ProductsGroups(0).Products.Add(New Product("fPhone 34", 999.99)) stores(0).ProductsGroups(0).Products.Add(New Product("fPhone 34Z", 9999.99)) stores(0).ProductsGroups(0).Products.Add(New Product("fPhone 34XX", 100000)) stores(0).ProductsGroups.Add(New ProductsGroup("Notebooks")) stores(0).ProductsGroups(1).Products.Add(New Product("DuckBook S", 9999.99)) stores(0).ProductsGroups(1).Products.Add(New Product("DuckBook Ultra", 14000)) stores(0).ProductsGroups(1).Products.Add(New Product("DuckBook Pro", 20000)) stores(0).ProductsGroups.Add(New ProductsGroup("Computers")) stores(0).ProductsGroups(2).Products.Add(New Product("DuckPC 3", 10000.99)) stores(0).ProductsGroups(2).Products.Add(New Product("DuckPro X", 15000)) stores(0).ProductsGroups(2).Products.Add(New Product("DuckPro Ultra", 19000))

stores.Add(New Store("Space Inc.")) stores(1).ProductsGroups.Add(New ProductsGroup("Mobile phones")) stores(1).ProductsGroups(0).Products.Add(New Product("Rocket 1A", 900)) stores(1).ProductsGroups(0).Products.Add(New Product("Rocket 2X", 3999)) stores(1).ProductsGroups(0).Products.Add(New Product("Rocket 3E", 20000)) stores(1).ProductsGroups.Add(New ProductsGroup("Notebooks")) stores(1).ProductsGroups(1).Products.Add(New Product("Shuttle 1A", 9999.99)) stores(1).ProductsGroups(1).Products.Add(New Product("Shuttle 1X", 14000)) stores(1).ProductsGroups(1).Products.Add(New Product("Shuttle Pro", 20000))

TreeView for WinForms  

46 Copyright © GrapeCity, Inc. All rights reserved.         

Page 48: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

stores(1).ProductsGroups.Add(New ProductsGroup("Computers")) stores(1).ProductsGroups(2).Products.Add(New Product("IssPC 2D", 10000.99)) stores(1).ProductsGroups(2).Products.Add(New Product("IssPro 2X", 15000)) stores(1).ProductsGroups(2).Products.Add(New Product("IssPro Pro", 19000))

stores.Add(New Store("Fruit Inc.")) stores(2).ProductsGroups.Add(New ProductsGroup("Mobile phones")) stores(2).ProductsGroups(0).Products.Add(New Product("Pineapple 1", 2900)) stores(2).ProductsGroups(0).Products.Add(New Product("Mango 1", 3099)) stores(2).ProductsGroups(0).Products.Add(New Product("Orange 1", 5000)) stores(2).ProductsGroups.Add(New ProductsGroup("Notebooks")) stores(2).ProductsGroups(1).Products.Add(New Product("Mandarin X", 9999.99)) stores(2).ProductsGroups(1).Products.Add(New Product("Lemon X", 14000)) stores(2).ProductsGroups(1).Products.Add(New Product("Lemon Pro", 20000)) stores(2).ProductsGroups.Add(New ProductsGroup("Computers")) stores(2).ProductsGroups(2).Products.Add(New Product("Plum X", 10000.99)) stores(2).ProductsGroups(2).Products.Add(New Product("Plum Z", 15000)) stores(2).ProductsGroups(2).Products.Add(New Product("Plum Pro", 19000))

Return stores End Function End Class

C#

// クラスを作成します。public class StoreCollection : BindingList<Store>{ public static StoreCollection GetData() { var stores = new StoreCollection();

stores.Add(new Store("Pear Inc.")); stores[0].ProductsGroups.Add(new ProductsGroup("Mobile phones")); stores[0].ProductsGroups[0].Products.Add(new Product("fPhone 34", 999.99)); stores[0].ProductsGroups[0].Products.Add(new Product("fPhone 34Z", 9999.99)); stores[0].ProductsGroups[0].Products.Add(new Product("fPhone 34XX", 100000)); stores[0].ProductsGroups.Add(new ProductsGroup("Notebooks")); stores[0].ProductsGroups[1].Products.Add(new Product("DuckBook S", 9999.99)); stores[0].ProductsGroups[1].Products.Add(new Product("DuckBook Ultra", 14000)); stores[0].ProductsGroups[1].Products.Add(new Product("DuckBook Pro", 20000)); stores[0].ProductsGroups.Add(new ProductsGroup("Computers")); stores[0].ProductsGroups[2].Products.Add(new Product("DuckPC 3", 10000.99)); stores[0].ProductsGroups[2].Products.Add(new Product("DuckPro X", 15000)); stores[0].ProductsGroups[2].Products.Add(new Product("DuckPro Ultra", 19000));

stores.Add(new Store("Space Inc.")); stores[1].ProductsGroups.Add(new ProductsGroup("Mobile phones")); stores[1].ProductsGroups[0].Products.Add(new Product("Rocket 1A", 900)); stores[1].ProductsGroups[0].Products.Add(new Product("Rocket 2X", 3999)); stores[1].ProductsGroups[0].Products.Add(new Product("Rocket 3E", 20000)); stores[1].ProductsGroups.Add(new ProductsGroup("Notebooks")); stores[1].ProductsGroups[1].Products.Add(new Product("Shuttle 1A", 9999.99)); stores[1].ProductsGroups[1].Products.Add(new Product("Shuttle 1X", 14000)); stores[1].ProductsGroups[1].Products.Add(new Product("Shuttle Pro", 20000)); stores[1].ProductsGroups.Add(new ProductsGroup("Computers")); stores[1].ProductsGroups[2].Products.Add(new Product("IssPC 2D", 10000.99)); stores[1].ProductsGroups[2].Products.Add(new Product("IssPro 2X", 15000)); stores[1].ProductsGroups[2].Products.Add(new Product("IssPro Pro", 19000));

stores.Add(new Store("Fruit Inc.")); stores[2].ProductsGroups.Add(new ProductsGroup("Mobile phones")); stores[2].ProductsGroups[0].Products.Add(new Product("Pineapple 1", 2900)); stores[2].ProductsGroups[0].Products.Add(new Product("Mango 1", 3099)); stores[2].ProductsGroups[0].Products.Add(new Product("Orange 1", 5000)); stores[2].ProductsGroups.Add(new ProductsGroup("Notebooks"));

  TreeView for WinForms

47 Copyright © GrapeCity, Inc. All rights reserved.         

Page 49: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

stores[2].ProductsGroups[1].Products.Add(new Product("Mandarin X", 9999.99)); stores[2].ProductsGroups[1].Products.Add(new Product("Lemon X", 14000)); stores[2].ProductsGroups[1].Products.Add(new Product("Lemon Pro", 20000)); stores[2].ProductsGroups.Add(new ProductsGroup("Computers")); stores[2].ProductsGroups[2].Products.Add(new Product("Plum X", 10000.99)); stores[2].ProductsGroups[2].Products.Add(new Product("Plum Z", 15000)); stores[2].ProductsGroups[2].Products.Add(new Product("Plum Pro", 19000));

return stores; }}

次に示すコードスニペットは、上記の各クラスに TreeView コントロールを連結します。

Visual Basic

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

C1TreeView1.Columns.Clear() C1TreeView1.DataSource = Nothing C1TreeView1.DataMember = "\ProductsGroups\Products" Dim column = New C1.Win.TreeView.C1TreeColumn() column.HeaderText = "製品名" C1TreeView1.Columns.Add(column) column = New C1.Win.TreeView.C1TreeColumn() column.DisplayFieldName = "CountOfProducts\CountOfProducts\" column.HeaderText = "店舗内の製品" C1TreeView1.Columns.Add(column) column = New C1.Win.TreeView.C1TreeColumn() column.DisplayFieldName = "\\Price" column.HeaderText = "値段" C1TreeView1.Columns.Add(column) C1TreeView1.DataSource = StoreCollection.GetData()End Sub

C#

public Form1(){ InitializeComponent();

c1TreeView1.Columns.Clear(); c1TreeView1.DataSource = null; c1TreeView1.DataMember = "\\ProductsGroups\\Products"; var column = new C1.Win.TreeView.C1TreeColumn(); column.HeaderText = "製品名"; c1TreeView1.Columns.Add(column); column = new C1.Win.TreeView.C1TreeColumn(); column.DisplayFieldName = "CountOfProducts\\CountOfProducts\\"; column.HeaderText = "店舗内の製品"; c1TreeView1.Columns.Add(column); column = new C1.Win.TreeView.C1TreeColumn(); column.DisplayFieldName = "\\\\Price"; column.HeaderText = "値段"; c1TreeView1.Columns.Add(column); c1TreeView1.DataSource = StoreCollection.GetData();}

コードを実行し、次のように出力されることを確認してください。

TreeView for WinForms  

48 Copyright © GrapeCity, Inc. All rights reserved.         

Page 50: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

  TreeView for WinForms

49 Copyright © GrapeCity, Inc. All rights reserved.         

Page 51: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

スタイル設定と外観スタイル設定と外観

このセクションでは、TreeView コントロールとその要素の外観のカスタマイズについて説明します。このコントロールはさまざ

まな方法でカスタマイズできます。詳細は以下のセクションを参照してください。

テーマ

ツリー線

右から左のサポート

ノードのカスタムボタン画像

展開ボタンとチェックボックスのアイコン

テーマテーマ

Themes for WinForms を使用することで、数多くの組み込みテーマやカスタムテーマを適用して、統一感のあるカスタマイ

ズされた外観で TreeView を表すことができます。詳細については、Themes for WinForms のオンラインヘルプを参照してく

ださい。

ツリー線ツリー線

ツリー線は、その名前が示すとおり、親ノードと子ノードの関係を明確に示すためにツリービューのノード間を接続する線です。

TreeView では、TreeViewStyles クラスから提供される ShowLines プロパティを true または false に設定することで、ツ

リー線を表示または非表示にすることができます。さらに、次のようにカスタマイズを実行できます。

Color:TreeViewStyles クラスの LinesColor プロパティを設定することで、ノード間の接続線の色を変更します。

Width:TreeViewStyles の LinesWidth プロパティを整数値に設定することで、ツリー線の幅を設定します。

Style:DashStyle 列挙から TreeViewStyles の LinesStyle プロパティを設定することで、ツリー線のスタイルを設定し

ます。

次の図に、色、幅、スタイルをカスタマイズしたツリー線を含む TreeView を示します。

次のコードスニペットはツリー線の表示を有効にして、その幅、色、スタイルをカスタマイズします。

TreeView for WinForms  

50 Copyright © GrapeCity, Inc. All rights reserved.         

Page 52: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

Visual Basic

'ShowLinesプロパティを設定します。C1TreeView1.Styles.ShowLines = True

'LinesWidthプロパティを設定します。C1TreeView1.Styles.LinesWidth = 2

'LinesColorプロパティを設定します。C1TreeView1.Styles.LinesColor = System.Drawing.Color.Orange

'LinesStyleプロパティを設定します。C1TreeView1.Styles.LinesStyle = Drawing2D.DashStyle.Solid

C#

// ShowLinesプロパティを設定します。c1TreeView1.Styles.ShowLines = true;

// LinesWidthプロパティを設定します。c1TreeView1.Styles.LinesWidth = 2;

// LinesColorプロパティを設定します。c1TreeView1.Styles.LinesColor = System.Drawing.Color.Orange; // LinesStyleプロパティを設定します。c1TreeView1.Styles.LinesStyle = System.Drawing.Drawing2D.DashStyle.Solid;

右から左のサポート右から左のサポート

TreeView は、右から左への筆記法に従う言語のサポートを提供しています。このコントロールで

は、System.Windows.Forms.Control の RightToLeft プロパティを使用することで、ツリービューのすべてのコンテンツを

右から左の方向で表すことができます。このプロパティは、Systems.Windows.Forms の RightToLeft 列挙に含まれる次の

値のいずれかに設定できます。

No:左から右の方向を設定します。これがデフォルトの方向です。

Yes:右から左の方向を設定します。

Inherit:親コントロールの方向を継承します。

次のコードスニペットは、コードでこれらのプロパティを設定する方法を示します。

Visual Basic

' RightToLeftプロパティを設定します。C1TreeView1.RightToLeft = System.Windows.Forms.RightToLeft.Yes

C#

// RightToLeftプロパティを設定します。c1TreeView1.RightToLeft = System.Windows.Forms.RightToLeft.Yes;

  TreeView for WinForms

51 Copyright © GrapeCity, Inc. All rights reserved.         

Page 53: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

ノードのカスタムボタン画像ノードのカスタムボタン画像

TreeView では、画像リストを使用して、ノードにカスタムボタン画像を簡単に表示できます。

Systems.Windows.Forms.ImageList クラスのインスタンスを作成し、リストの Images コレクションで Add メソッドを使用し

てリストに画像を追加します。C1TreeView クラスの ImageList プロパティを使用して、このインスタンスを TreeView の画像

リストとして設定します。

特定のノードの画像のコレクションにアクセスするには、C1TreeNode の Images プロパティを使用する必要があります。ま

た、画像リスト内の特定の画像を特定のノードに追加するには、C1TreeNode の Images プロパティで

System.Collections.ObjectModel の Add メソッドを使用して、画像のインデックスを追加します。

実装方法については、次のコードスニペットを参照してください。

Visual Basic

' 画像リストのインスタンスを作成します。Dim imageList As New ImageList()

' 画像リストに画像を追加します。imageList.Images.Add(Image.FromFile("C:\Resources\1.png"))imageList.Images.Add(Image.FromFile("C:\Resources\2.png"))imageList.Images.Add(Image.FromFile("C:\Resources\3.png"))

' 画像リストインスタンスをTreeViewイメージリストとして設定します。C1TreeView1.ImageList = imageList

' ノードの画像インデックスを指定します。C1TreeView1.Nodes(0).Images.Add(0)C1TreeView1.Nodes(1).Images.Add(1)C1TreeView1.Nodes(2).Images.Add(2)

C#

// 画像リストのインスタンスを作成します。ImageList imageList = new ImageList();

// 画像リストに画像を追加します。imageList.Images.Add(Image.FromFile("C:\\Resources\\1.png"));imageList.Images.Add(Image.FromFile("C:\\Resources\\2.png"));imageList.Images.Add(Image.FromFile("C:\\Resources\\3.png"));

// 画像リストインスタンスをTreeViewイメージリストとして設定します。c1TreeView1.ImageList = imageList;

TreeView for WinForms  

52 Copyright © GrapeCity, Inc. All rights reserved.         

Page 54: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

// ノードの画像インデックスを指定します。c1TreeView1.Nodes[0].Images.Add(0);c1TreeView1.Nodes[1].Images.Add(1);c1TreeView1.Nodes[2].Images.Add(2);

展開ボタンとチェックボックスのアイコン展開ボタンとチェックボックスのアイコン

TreeView では、展開ボタンやチェックボックスのアイコンの外観をカスタマイズできます。

展開ボタンのアイコンをカスタマイズするには、TreeViewStyles クラスで提供される ExpandButtonStyle プロパティを設定

する必要があります。プロパティは、ExpandButtonStyle 列挙に含まれる値を受け取ります。この値を使用することで、展開

ボタンに、標準のシステムビュー、VS2015 ビュー、Windows10 ビューのいずれかを設定できます。チェックボックスのアイコン

をカスタマイズするには、TreeViewStyles の CheckBoxStyle プロパティを設定します。このプロパティは、CheckBoxStyle列挙に含まれる値を受け取ります。この値を使用することで、チェックボックスに、標準のシステムビュー、MS Office ビュー、

Windows10 ビューのいずれかを設定できます。

ExpandButtonStyle プロパティと CheckBoxStyle プロパティは、C1TreeView の Styles プロパティを使用して TreeView スタ

イルにアクセスした後でないと使用できないことに注意してください。

次のコードスニペットに実装方法を示します。

Visual Basic

' CheckBoxStyleプロパティを設定します。C1TreeView1.Styles.CheckBoxStyle = C1.Win.TreeView.CheckBoxStyle.Windows10

' ExpandButtonStyleプロパティを設定します。C1TreeView1.Styles.ExpandButtonStyle = C1.Win.TreeView.ExpandButtonStyle.Windows10

C#

// CheckBoxStyleプロパティを設定します。c1TreeView1.Styles.CheckBoxStyle = C1.Win.TreeView.CheckBoxStyle.Windows10;

// ExpandButtonStyleプロパティを設定します。c1TreeView1.Styles.ExpandButtonStyle = C1.Win.TreeView.ExpandButtonStyle.Windows10;

  TreeView for WinForms

53 Copyright © GrapeCity, Inc. All rights reserved.         

Page 55: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

単一ノードまたはノードセルのスタイル設定単一ノードまたはノードセルのスタイル設定

TreeView では、C1TreeView の ApplyNodeStyles イベントとApplyNodeCellStyles イベントを使用して、1 つのノードまた

はノードセルのスタイルを変更できます。ApplyNodeStyles イベントは、ノードにスタイルを適用したときに発生します。

ApplyNodeCellStyles イベントは、ノードのセルにスタイルを適用したときに発生します。

ノードまたはノードセルをカスタマイズするには、まず、C1TreeNode クラスの Level プロパティを使用して、ノードレベルを指

定する必要があります。次に、C1TreeViewNodeStylesEventArgs クラスと C1TreeViewNodeCellStylesEventArgs クラ

スでそれぞれ提供される NodeStyles プロパティまたは NodeCellStyles プロパティを使用して、NodeCellStyle クラス

とTreeNodeCellStyles クラスのプロパティにアクセスします。これらのクラスで提供されてい

る BackColor、ForeColor、Default などのプロパティを使用して、特定のノードまたはノードセルをカスタマイズできます。

次のコードスニペットに、実装方法を示します。

Visual Basic

Private Sub C1TreeView1_ApplyNodeStyles(sender As Object, e As C1TreeViewNodeStylesEventArgs)

If (e.Node.Level = 1) OrElse (e.Node.Level = 2) Then e.NodeStyles.[Default].BackColor = Color.Aqua End IfEnd SubPrivate Sub C1TreeView1_ApplyNodeCellStyles(sender As Object,e As C1.Win.TreeView.C1TreeViewNodeCellStylesEventArgs)

If e.Node.Level = 0 AndAlso e.ColumnIndex = 0 Then e.NodeCellStyles.[Default].BackColor = Color.LightGray End IfEnd Sub

C#

private void C1TreeView1_ApplyNodeStyles(object sender, C1.Win.TreeView.C1TreeViewNodeStylesEventArgs e){

TreeView for WinForms  

54 Copyright © GrapeCity, Inc. All rights reserved.         

Page 56: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

if ((e.Node.Level == 1)||(e.Node.Level == 2)) e.NodeStyles.Default.BackColor = Color.Aqua;}

private void C1TreeView1_ApplyNodeCellStyles(object sender, C1.Win.TreeView.C1TreeViewNodeCellStylesEventArgs e){

if (e.Node.Level == 0 && e.ColumnIndex == 0) e.NodeCellStyles.Default.BackColor = Color.LightGray;}

  TreeView for WinForms

55 Copyright © GrapeCity, Inc. All rights reserved.         

Page 57: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

XML のインポートとエクスポートのインポートとエクスポート

TreeView は、XML ドキュメントとの間でのデータのエクスポートおよびインポートをサポートしています。

C1TreeView クラスが提供する ReadXml メソッドを使用すると、XML ドキュメントのデータを使用してツリービューをロードで

きます。このメソッドは、XML ファイルのパスをパラメータとして受け取り、データのロード元となるファイルを決定します。

さらに、C1TreeView クラスが提供する WriteXml メソッドを使用すると、ツリービューの内容を XML ドキュメントに保存するこ

とができます。ReadXml メソッドと同様に、このメソッドも、ファイルパスをパラメータとして受け取り、ツリービューの内容の保

存先となるファイルを決定します。

次のコードスニペットでは、まず XML ドキュメント(Doc.XML)から TreeView コントロールにデータをインポートし、次に

TreeView コントロールから別の XML ドキュメント(TreeView.XML)にデータをエクスポートしています。

Visual Basic

' ReadXmlメソッドを呼び出します。C1TreeView1.ReadXml("C:/Users/GPCTAdmin/Desktop/Doc.XML")

' WriteXmlメソッドを呼び出します。C1TreeView1.WriteXml("C:/Users/GPCTAdmin/Desktop/TreeView.XML")

C#

// ReadXmlメソッドを呼び出します。c1TreeView1.ReadXml("C:/Users/GPCTAdmin/Desktop/Doc.XML");

// WriteXmlメソッドを呼び出します。c1TreeView1.WriteXml("C:/Users/GPCTAdmin/Desktop/TreeView.XML");

TreeView for WinForms  

56 Copyright © GrapeCity, Inc. All rights reserved.         

Page 58: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

Integration with Expression EditorTreeView supports integration with the Expression Editor control. When integrated with Expression Editor, expressionscan be used to perform operations such as column calculation over the data in TreeView. These expressions can beused on all the node levels available in the TreeView control.

To integrate Expression Editor with the TreeView, you need to use ExpressionInfo property of C1TreeColumn class,which contains information about expressions. These expressions can be set for columns using Expressions propertyof ExpressionInfo class.

The following image shows the TreeView control integrated with Expression Editor.

The ExpressionInfo class provides various other properties listed below that can be used to manipulate expressions inTreeView control. These properties can be used to add, edit, or delete expressions on any of the node levels availablein TreeView.

Property Description

AllowAddNew Indicates the ability to add node level expression

AllowDelete Indicates the ability to remove node level expression

AllowEdit Indicates whether the expressions of this column can be edited by clicking the ExpressionEditor icon in the column header

ExpandLastExpression Indicates whether the last expression expand to all subsequent levels of the TreeView even ifthe expression is not defined for them

The following code demonstrates integration of TreeView with Expression Editor. In this code, expression is used onthe fifth column of the TreeView control which contains two levels. Here, we have added an expression for the secondlevel only.For this, we set our expression to the second item of the Expressions array, and set the first item as empty.

C#

private void Form1_Load(object sender, EventArgs e){ this.categoriesTableAdapter.Fill(this.c1NWindDataSet.Categories); this.productsTableAdapter.Fill(this.c1NWindDataSet.Products); c1TreeView1.BindingInfo.DataSource = c1NWindDataSetBindingSource;

  TreeView for WinForms

57 Copyright © GrapeCity, Inc. All rights reserved.         

Page 59: TreeView for WinForms - docs.grapecity.com · TreeView のスマートタグを使用すると、 TreeView 要素の作成においてよく使用される [[C1TreeView タスク]タスク]

c1TreeView1.Columns[4].ExpressionInfo.Expressions = new string[] { "", "[UnitPrice]*([UnitsInStock]+[UnitsOnOrder])" };

c1TreeView1.Columns[4].ExpressionInfo.AllowEdit = new bool[] { true, true }; c1TreeView1.Columns[4].ExpressionInfo.AllowAddNew = true; c1TreeView1.Columns[4].ExpressionInfo.AllowDelete = true; }

TreeView for WinForms  

58 Copyright © GrapeCity, Inc. All rights reserved.