TreeNodeCollection.IndexOf(TreeNode) メソッド


コレクション内の指定されたツリー ノードのインデックスを返します。Returns the index of the specified tree node in the collection.

 int IndexOf(System::Windows::Forms::TreeNode ^ node);
public int IndexOf (System.Windows.Forms.TreeNode node);
member this.IndexOf : System.Windows.Forms.TreeNode -> int
Public Function IndexOf (node As TreeNode) As Integer



コレクション内で検索する TreeNodeThe TreeNode to locate in the collection.


ツリー ノード コレクション内に項目が存在する場合は、その項目の 0 から始まるインデックス。それ以外の場合は -1。The zero-based index of the item found in the tree node collection; otherwise, -1.

次のコード例では、指定TreeNodeしたがTreeNodeCollection内にあるかどうかを判断し、コレクションを列挙します。The following code example determines if a specified TreeNode is within a TreeNodeCollection, and then enumerates the collection. この例では、にとFormいう名前TreeView myTreeNode2TreeNodeを含むTreeNodeCollectionがあることが必要です。This example requires that you have a Form with a TreeView that has a TreeNodeCollection that contains a TreeNode named myTreeNode2.

void EnumerateTreeNodes()
   TreeNodeCollection^ myNodeCollection = myTreeView->Nodes;

   // Check for a node in the collection.
   if ( myNodeCollection->Contains( myTreeNode2 ) )
      myLabel->Text = myLabel->Text + "Node2 is at index: " + myNodeCollection->IndexOf( myTreeNode2 );

   myLabel->Text = myLabel->Text + "\n\nElements of the TreeNodeCollection:\n";

   // Create an enumerator for the collection.
   IEnumerator^ myEnumerator = myNodeCollection->GetEnumerator();
   while ( myEnumerator->MoveNext() )
      myLabel->Text = myLabel->Text + (dynamic_cast<TreeNode^>(myEnumerator->Current))->Text + "\n";
private void EnumerateTreeNodes()
   TreeNodeCollection myNodeCollection = myTreeView.Nodes;
   // Check for a node in the collection.
   if (myNodeCollection.Contains(myTreeNode2))
      myLabel.Text += "Node2 is at index: " + myNodeCollection.IndexOf(myTreeNode2);
   myLabel.Text += "\n\nElements of the TreeNodeCollection:\n";

   // Create an enumerator for the collection.
   IEnumerator myEnumerator = myNodeCollection.GetEnumerator();
      myLabel.Text += ((TreeNode)myEnumerator.Current).Text +"\n";
Private Sub EnumerateTreeNodes()
   Dim myNodeCollection As TreeNodeCollection = myTreeView.Nodes
   ' Check for a node in the collection.
   If myNodeCollection.Contains(myTreeNode2) Then
      myLabel.Text += "Node2 is at index: " + myNodeCollection.IndexOf(myTreeNode2)
   End If
   myLabel.Text += ControlChars.Cr + ControlChars.Cr + _
     "Elements of the TreeNodeCollection:" + ControlChars.Cr
   ' Create an enumerator for the collection.
   Dim myEnumerator As IEnumerator = myNodeCollection.GetEnumerator()
   While myEnumerator.MoveNext()
      myLabel.Text += CType(myEnumerator.Current, TreeNode).Text + ControlChars.Cr
   End While
End Sub 


このメソッドにかかる時間は、ノードコレクションのサイズに比例しているため、大きなコレクションでは使用しないようにすることができます。The amount of time this method takes is proportional to the size of the node collection, so you may want to avoid using it with large collections.

このメソッドは、参照の等価性のみをチェックします。This method checks for reference equality only. これを使用して、コレクション内の等価であるが異なるノードのインデックスを取得することはできません。You cannot use it to retrieve the index of an equivalent but different node in the collection.


参照等値の要件の1つは、 TreeNode TreeNodeクラスのEqualsメソッドをオーバーライドすることによって、派生型のこのメソッドの動作をカスタマイズできないことです。One implication of the reference-equality requirement is that you cannot customize the behavior of this method for derived TreeNode types by overriding the Equals method of the TreeNode class.