TreeNode クラスとは? わかりやすく解説

TreeNode クラス

メモ : このクラスは、.NET Framework version 2.0新しく追加されたものです。

TreeView コントロールノード表します

名前空間: System.Web.UI.WebControls
アセンブリ: System.Web (system.web.dll 内)
構文構文

Public Class TreeNode
    Implements IStateManager, ICloneable
public class TreeNode : IStateManager, ICloneable
public ref class TreeNode : IStateManager,
 ICloneable
public class TreeNode implements IStateManager,
 ICloneable
public class TreeNode implements IStateManager,
 ICloneable
解説解説

TreeView コントロールノード構成されます。ツリー内のエントリノード呼ばれTreeNode オブジェクト表されます。他のノード格納するノード親ノード呼ばれます。他のノード格納されるノード子ノード呼ばれます子ノード持たないノード葉ノード呼ばれます。他のノード格納されておらず、他のすべてのノード先祖となるノードルート ノードです。ノードは、親と子両方該当することがあります。ただし、1 つノードルート ノード親ノード、および葉ノードのうちの 2 つ以上に該当することはありません。ノード表示動作に関する一部プロパティは、ノードルート、親、のどのノード該当するかによって決定されます。

通常のツリーにはルート ノード1 つしかありませんが、TreeView コントロール使用すると、ツリー構造複数ルート ノード追加できます。この機能は、製品カテゴリ一覧のように 1 つメインルート ノード表示せずに項目一覧表示する場合に便利です。

ノードは、主にデータText プロパティValue プロパティの、2 つプロパティ格納しますText プロパティの値は TreeView コントロール表示されます。Value プロパティは、ポストバック イベントの処理に使用するデータなど、ノードに関する追加データ格納するために使用されます。また、ノードには、そのノードから ValuePath プロパティ内のルート ノードへのパス格納されます。ValuePath プロパティは、ルート ノード対するそのノード相対的な位置示します

メモメモ

同じレベルにあるノードは、それぞれの Value プロパティの値が一意であることが必要です。同一レベル複数ノードでこの値が同じであると、TreeView コントロールは各ノード区別できません。この場合重複した値を持つノードユーザークリックすると、最初に TreeView コントロール表示されているノード選択されます。

TreeNode オブジェクトは、次の 4 つユーザー インターフェイス (UI: User Interface) 要素構成されます。これらの要素は、カスタマイズしたり、非表示にしたりできます

TreeView クラスの ExpandImageUrl、CollapseImageUrl、NoExpandImageUrl の各プロパティ設定すると、展開可能、折りたたみ可能、および展開不能の各ノード インジケータカスタム イメージ指定できますTreeView クラスの ShowExpandCollapse プロパティfalse設定すると、展開ノード インジケータ アイコンを完全に非表示できます

ノードの隣にあるチェック ボックス表示するには、TreeView クラスの ShowCheckBoxes プロパティ設定しますShowCheckBoxes プロパティTreeNodeType.Node 以外の値に設定すると、指定したノード型の隣にチェック ボックス表示されます。ノードの ShowCheckBox プロパティ設定することによって、各ノードチェック ボックス選択的にオーバーライドできますチェック ボックス表示されている場合は、Checked プロパティ使用して、そのチェック ボックス選択されているかどうか確認します

ImageUrl プロパティ設定することによって、ノードイメージ表示できます。このイメージは、ノード テキストの隣に表示されます。

TreeView コントロールノードテキストは、2 種類モード (選択モードナビゲーション モード) のどちらか表示できます既定では、ノード選択モードになってます。ノードナビゲーション モードにするには、ノードの NavigateUrl プロパティ空の文字列 ("") 以外の値に設定しますノード選択モードにするには、ノードNavigateUrl プロパティ空の文字列設定します

既定では、選択モードノードクリックすると、ページサーバーポストバックされ、SelectedNodeChanged イベント発生しますオプションで、ノードSelectAction プロパティ設定し別のイベント指定できます詳細については、「SelectAction」を参照してください選択モードクリックされたノード確認するには、TreeView コントロールの SelectedNode プロパティ使用します

ノードナビゲーション モード場合選択項目のすべてのイベントは、そのノードに対して無効になりますナビゲーション モードノードクリックすると、指定されURL移動しますオプションTarget プロパティ設定しリンクされ内容表示されるウィンドウまたは指定できます

TreeNode クラスには、ノードの状態を格納するために使用される複数プロパティ格納されます。Selected プロパティ使用してノード選択されているかどうか確認しますノード展開されているかどうか確認するには、Expanded プロパティ使用します。DataBound プロパティは、ノードデータバインドされているかどうか確認するために使用しますノードデータバインドされている場合、DataItem プロパティ使用して基になるデータアクセスできます

クラスには、ツリー内の他のノード対するそのノード相対的な位置確認するための複数プロパティ用意されています。Depth プロパティ使用してノード深さ確認しますValuePath プロパティ使用して現在のノードからルート ノードまでのノード区切られリスト取得できますノード親ノード確認するには、Parent プロパティ使用します子ノードには、ChildNodes コレクション使用してアクセスます。

データサイズカスタム コンテンツユーザー入力依存する場合もあるため、ツリー構造をあらかじめ静的定義するのは現実的ではありません。このためTreeView コントロール動的なノード ポピュレーションサポートしてます。ノード展開されている場合実行時データ設定できます動的なノード ポピュレーション詳細については、PopulateOnDemand プロパティトピック参照してください

TreeNodeインスタンス初期プロパティ値の一覧については、TreeNode コンストラクタトピック参照してください

使用例使用例

次のコード例フレーム設定する方法次のコード例示します

<html>
         
    <frameset cols="30%, 75%">
   
        <frame name="Menu" src="TreeViewFramevb.aspx"/>
        <frame name="Content" src="Home.aspx"/>
 
           
    </frameset>      
   
</html>

<html>
         
    <frameset cols="30%, 75%">
   
        <frame name="Menu" src="TreeViewFramecs.aspx"/>
        <frame name="Content" src="Home.aspx"/> 
           
    </frameset>      
   
</html>

宣言構文使用して TreeView コントロールTreeNode オブジェクト作成する方法次のコード例示します。この例は、前の例のフレームセット内で目次表示するために使用されます。

<%@ Page Language="VB" %>

<html>
  <body>
    <form runat="server">
    
      <h3>TreeView Declarative Syntax Example</h3>
      
      <asp:TreeView id="SampleTreeView" 
        runat="server">
         
        <Nodes>
        
          <asp:TreeNode Value="Home" 
            NavigateUrl="Home.aspx" 
            Text="Home"
            Target="Content" 
            Expanded="True">
             
            <asp:TreeNode Value="Page 1" 
              NavigateUrl="Page1.aspx" 
              Text="Page1"
              Target="Content">
               
              <asp:TreeNode Value="Section 1" 
                NavigateUrl="Section1.aspx" 
                Text="Section 1"
                Target="Content"/>
                 
            </asp:TreeNode>              
            
            <asp:TreeNode Value="Page 2" 
              NavigateUrl="Page2.aspx"
              Text="Page 2"
              Target="Content">
               
            </asp:TreeNode> 
            
          </asp:TreeNode>
        
        </Nodes>
        
      </asp:TreeView>

    </form>
  </body>
</html>

<%@ Page Language="C#" %>

<html>
  <body>
    <form runat="server">
    
      <h3>TreeView Declarative Syntax Example</h3>
      
      <asp:TreeView id="SampleTreeView" 
        runat="server">
         
        <Nodes>
        
          <asp:TreeNode Value="Home" 
            NavigateUrl="Home.aspx" 
            Text="Home"
            Target="Content" 
            Expanded="True">
             
            <asp:TreeNode Value="Page 1" 
              NavigateUrl="Page1.aspx" 
              Text="Page1"
              Target="Content">
               
              <asp:TreeNode Value="Section 1" 
                NavigateUrl="Section1.aspx" 
                Text="Section 1"
                Target="Content"/>
                 
            </asp:TreeNode>              
            
            <asp:TreeNode Value="Page 2" 
              NavigateUrl="Page2.aspx"
              Text="Page 2"
              Target="Content">
               
            </asp:TreeNode> 
            
          </asp:TreeNode>
        
        </Nodes>
        
      </asp:TreeView>

    </form>
  </body>
</html>

.NET Framework のセキュリティ.NET Frameworkセキュリティ
継承階層継承階層
System.Object
  System.Web.UI.WebControls.TreeNode
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
TreeNode メンバ
System.Web.UI.WebControls 名前空間
TreeView
ChildNodes
ImageUrl
NavigateUrl
Nodes
Parent
PopulateOnDemand
Target
Text
Value

TreeNode クラス

TreeView のノード表します

名前空間: System.Windows.Forms
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)
構文構文

<SerializableAttribute> _
Public Class TreeNode
    Inherits MarshalByRefObject
    Implements ICloneable, ISerializable
[SerializableAttribute] 
public class TreeNode : MarshalByRefObject,
 ICloneable, ISerializable
[SerializableAttribute] 
public ref class TreeNode : public
 MarshalByRefObject, ICloneable, ISerializable
/** @attribute SerializableAttribute() */ 
public class TreeNode extends MarshalByRefObject
 implements ICloneable, ISerializable
SerializableAttribute 
public class TreeNode extends
 MarshalByRefObject implements ICloneable, ISerializable
解説解説

Nodes コレクションには、現在の TreeNode割り当てられているすべてのTreeNode オブジェクト格納されます。TreeNode に対して追加削除、またはクローン作成実行できますその場合、すべてのツリー ノード追加削除、またはクローン作成されます。TreeNode には、他の TreeNode オブジェクトコレクション格納できますこのためコレクション反復処理するときに、TreeView 内の現在の位置わかりにくくなる可能性ありますツリー構造内の位置確認するには、FullPath プロパティ使用しますFullPath 文字列解析するときに PathSeparator 文字列値を使用すると、1 つTreeNode ラベルがどこから始まってどこで終わっているかがわかります

TreeNode ラベルは、Text プロパティ明示的に設定することによって設定します別の方法として、Text プロパティを表す文字パラメータをとる TreeNode コンストラクタ1 つ使用してツリー ノード作成する方法ありますTreeNodeイメージ表示される場合ラベルはそのイメージの横に表示されます。

ツリー ノードの横にイメージ表示するには、親である TreeView コントロールImageList プロパティImageList割り当てImageList プロパティインデックス値を参照することによって Image割り当てます。ImageIndex プロパティには、TreeNode選択されていないときに表示する Imageインデックス値を設定します同様に、SelectedImageIndex プロパティには、TreeNode選択されているときに表示する Imageインデックス値を設定します

特定のツリー ノード選択しNodes コレクション反復処理するには、FirstNode、LastNode、NextNode、PrevNode、NextVisibleNode、PrevVisibleNode の各プロパティ値を使用します。これらのプロパティいずれかによって返されTreeNode を TreeView.SelectedNode プロパティ割り当てると、TreeView コントロールでそのツリー ノード選択されます。

ツリー ノード展開して、その次のレベルにある子ツリー ノード表示できますTreeNode の横にプラス (+) ボタン表示されている場合は、ユーザーがそのボタンを押すと TreeNode展開されます。または、Expand メソッド呼び出して TreeNode展開することもできますNodes コレクション内のすべてのツリー ノードレベル展開するには、ExpandAll メソッド呼び出します。Collapse メソッド呼び出すか、TreeNode の横にマイナス (-) ボタン表示されている場合ユーザーがそのボタン押したときに、子レベルTreeNode折りたたまれます。Toggle メソッド呼び出してTreeNode展開した態と折りたたまれた状態を切り替えることもできます

ツリー ノードには、オプションチェック ボックス表示できますチェック ボックス表示するには、TreeView の CheckBoxes プロパティtrue設定しますチェックされた状態のツリー ノードについては、Checked プロパティtrue設定されます。

継承時の注意 TreeNode クラスでは ISerializable インターフェイス実装されるため、シリアル化する派生クラスでもこのインターフェイス特殊なコンストラクタ実装する必要があります。これについては、「シリアル化カスタマイズ」で説明してます。

使用例使用例

TreeView コントロール顧客情報表示するコード例次に示しますルート ツリー ノード顧客名が表示され、各顧客割り当てられ発注番号が子ツリー ノード表示されます。この例では、1,000 人の顧客表示され顧客ごとに 15発注内容示されます。BeginUpdate メソッドと EndUpdate メソッド使用すると、TreeView は再描画されません。TreeViewTreeNode オブジェクト作成して描画する間、待機 Cursor表示されます。この例では、Order オブジェクトコレクション保持できる Customer オブジェクト存在する必要がありますまた、TreeView コントロールインスタンスForm 上に作成されている必要もあります

' Create a new ArrayList to hold the Customer objects.
Private customerArray As New
 ArrayList()

Private Sub FillMyTreeView()
   ' Add customers to the ArrayList of Customer objects.
   Dim x As Integer
   For x = 0 To 999
      customerArray.Add(New Customer("Customer"
 + x.ToString()))
   Next x

   ' Add orders to each Customer object in the ArrayList.
   Dim customer1 As Customer
   For Each customer1 In
 customerArray
      Dim y As Integer
      For y = 0 To 14
         customer1.CustomerOrders.Add(New Order("Order"
 + y.ToString()))
      Next y
   Next customer1

   ' Display a wait cursor while the TreeNodes are being created.
   Cursor.Current = New Cursor("MyWait.cur")

   ' Suppress repainting the TreeView until all the objects have been
 created.
   treeView1.BeginUpdate()

   ' Clear the TreeView each time the method is called.
   treeView1.Nodes.Clear()

   ' Add a root TreeNode for each Customer object in the ArrayList.
   Dim customer2 As Customer
   For Each customer2 In
 customerArray
      treeView1.Nodes.Add(New TreeNode(customer2.CustomerName))

      ' Add a child TreeNode for each Order object in the current Customer
 object.
      Dim order1 As Order
      For Each order1 In
 customer2.CustomerOrders
         treeView1.Nodes(customerArray.IndexOf(customer2)).Nodes.Add( _
    New TreeNode(customer2.CustomerName + "."
 + order1.OrderID))
      Next order1
   Next customer2

   ' Reset the cursor to the default for all controls.
   Cursor.Current = System.Windows.Forms.Cursors.Default

   ' Begin repainting the TreeView.
   treeView1.EndUpdate()
End Sub 'FillMyTreeView
// Create a new ArrayList to hold the Customer objects.
private ArrayList customerArray = new ArrayList();
 

private void FillMyTreeView()
{
   // Add customers to the ArrayList of Customer objects.
   for(int x=0; x<1000; x++)
   {
      customerArray.Add(new Customer("Customer" + x.ToString()));
   }

   // Add orders to each Customer object in the ArrayList.
   foreach(Customer customer1 in customerArray)
   {
      for(int y=0; y<15; y++)
      {
         customer1.CustomerOrders.Add(new Order("Order"
 + y.ToString()));    
      }
   }

   // Display a wait cursor while the TreeNodes are being created.
   Cursor.Current = new Cursor("MyWait.cur");
        
   // Suppress repainting the TreeView until all the objects have been
 created.
   treeView1.BeginUpdate();

   // Clear the TreeView each time the method is called.
   treeView1.Nodes.Clear();

   // Add a root TreeNode for each Customer object in the ArrayList.
   foreach(Customer customer2 in customerArray)
   {
      treeView1.Nodes.Add(new TreeNode(customer2.CustomerName));
          
      // Add a child treenode for each Order object in the current Customer
 object.
      foreach(Order order1 in customer2.CustomerOrders)
      {
         treeView1.Nodes[customerArray.IndexOf(customer2)].Nodes.Add(
           new TreeNode(customer2.CustomerName + "."
 + order1.OrderID));
      }
   }

   // Reset the cursor to the default for all controls.
   Cursor.Current = Cursors.Default;

   // Begin repainting the TreeView.
   treeView1.EndUpdate();
}
void FillMyTreeView()
{
   // Add customers to the ArrayList of Customer objects.
   for ( int x = 0; x < 1000; x++ )
   {
      customerArray->Add( gcnew Customer( "Customer " + x ) );
   }
   
   // Add orders to each Customer object in the ArrayList.
   IEnumerator^ myEnum = customerArray->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Customer^ customer1 = safe_cast<Customer^>(myEnum->Current);
      for ( int y = 0; y < 15; y++ )
      {
         customer1->CustomerOrders->Add( gcnew Order( "Order " +
 y ) );
      }
   }

   // Display a wait cursor while the TreeNodes are being created.
   ::Cursor::Current = gcnew System::Windows::Forms::Cursor( "MyWait.cur"
 );
   
   // Suppress repainting the TreeView until all the objects have been
 created.
   treeView1->BeginUpdate();
   
   // Clear the TreeView each time the method is called.
   treeView1->Nodes->Clear();
   
   // Add a root TreeNode for each Customer object in the ArrayList.
   while ( myEnum->MoveNext() )
   {
      Customer^ customer2 = safe_cast<Customer^>(myEnum->Current);
      treeView1->Nodes->Add( gcnew TreeNode( customer2->CustomerName ) );
      
      // Add a child treenode for each Order object in the current Customer
 object.
      IEnumerator^ myEnum = customer2->CustomerOrders->GetEnumerator();
      while ( myEnum->MoveNext() )
      {
         Order^ order1 = safe_cast<Order^>(myEnum->Current);
         treeView1->Nodes[ customerArray->IndexOf( customer2 ) ]->Nodes->Add(
 gcnew TreeNode( customer2->CustomerName + "." + order1->OrderID
 ) );
      }
   }
   
   // Reset the cursor to the default for all controls.
   ::Cursor::Current = Cursors::Default;
   
   // Begin repainting the TreeView.
   treeView1->EndUpdate();
}
// Create a new ArrayList to hold the Customer objects.
private ArrayList customerArray = new ArrayList();

private void FillMyTreeView()
{
    // Add customers to the ArrayList of Customer objects.
    for (int x = 0; x < 1000; x++) {
        customerArray.Add(new Customer("Customer"
            + ((Int32)x).ToString()));
    }
    // Add orders to each Customer object in the ArrayList.
    for (int iCtr = 0; iCtr < customerArray.get_Count();
 iCtr++) {
        Customer customer1 = (Customer)customerArray.get_Item(iCtr);
        for (int y = 0; y < 15; y++) {
            customer1.get_CustomerOrders().Add(new Order("Order"
                + ((Int32)y).ToString()));
        }
    }
    // Display a wait cursor while the TreeNodes are being created.
    get_Cursor().set_Current(new Cursor("MyWait.cur"));
    // Suppress repainting the TreeView until all the objects have
    // been created.
    treeView1.BeginUpdate();
    // Clear the TreeView each time the method is called.
    treeView1.get_Nodes().Clear();
    // Add a root TreeNode for each Customer object in the ArrayList.
    for (int iCtr1 = 0; iCtr1 < customerArray.get_Count();
 iCtr1++) {
        Customer customer2 = (Customer)customerArray.get_Item(iCtr1);
        treeView1.get_Nodes().Add(new TreeNode(customer2.get_CustomerName()));
        // Add a child treenode for each Order object in the current
        // Customer object.
        for (int iCtr2 = 0; iCtr2 < customer2.get_CustomerOrders().
            get_Count(); iCtr2++) {
            Order order1 = (Order)customer2.get_CustomerOrders().
                get_Item(iCtr2);
            treeView1.get_Nodes().
                get_Item(customerArray.IndexOf(customer2)).get_Nodes().
                Add(new TreeNode(customer2.get_CustomerName()
 + "."
                + order1.get_OrderID()));
        }
    }
    // Reset the cursor to the default for all controls.
    get_Cursor().set_Current(Cursors.get_Default());
    // Begin repainting the TreeView.
    treeView1.EndUpdate();
} //FillMyTreeView
継承階層継承階層
System.Object
   System.MarshalByRefObject
    System.Windows.Forms.TreeNode
       System.ComponentModel.Design.ObjectSelectorEditor.SelectorNode
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照


このページでは「.NET Framework クラス ライブラリ リファレンス」からTreeNode クラスを検索した結果を表示しています。
Weblioに収録されているすべての辞書からTreeNode クラスを検索する場合は、下記のリンクをクリックしてください。
 全ての辞書からTreeNode クラス を検索

英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「TreeNode クラス」の関連用語

TreeNode クラスのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



TreeNode クラスのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS