次の方法で共有


TreeView.AfterCollapse イベント

ツリー ノードが折りたたまれた後に発生します。

Public Event AfterCollapse As TreeViewEventHandler
[C#]
public event TreeViewEventHandler AfterCollapse;
[C++]
public: __event TreeViewEventHandler* AfterCollapse;

[JScript] JScript では、このクラスで定義されているイベントを処理できます。ただし、独自に定義することはできません。

イベント データ

イベント ハンドラが、このイベントに関連するデータを含む、TreeViewEventArgs 型の引数を受け取りました。次の TreeViewEventArgs プロパティには、このイベントの固有の情報が記載されます。

プロパティ 説明
Action イベントを発生させたアクションの種類を取得します。
Node チェックされた、展開された、折りたたまれた、または選択されたツリー ノードを取得します。

解説

イベント処理の詳細については、「 イベントの利用 」を参照してください。

使用例

[Visual Basic, C#, C++] ユーザーがチェック状態を変更したときに TreeNode のすべての子ツリー ノードを更新する例を次に示します。このコードは、 TreeNodeCollectionTreeNode オブジェクトがある TreeView が配置された Form があることを前提にしています。 TreeNodeCollection は、子ノードを持つツリー ノードを持っている必要があります。

 
' Updates all child tree nodes recursively.
Private Sub CheckAllChildNodes(treeNode As TreeNode, nodeChecked As Boolean)
   Dim node As TreeNode
   For Each node In  treeNode.Nodes 
      node.Checked = nodeChecked
      If node.Nodes.Count > 0 Then
         ' If the current node has child nodes, call the CheckAllChildsNodes method recursively.
         Me.CheckAllChildNodes(node, nodeChecked)
      End If
   Next node
End Sub
      
' NOTE   This code can be added to the BeforeCheck event handler instead of the AfterCheck event.
' After a tree node's Checked property is changed, all its child nodes are updated to the same value.
Private Sub node_AfterCheck(sender As Object, e As TreeViewEventArgs) Handles treeView1.AfterCheck
   ' The code only executes if the user caused the checked state to change.
   If e.Action <> TreeViewAction.Unknown Then 
      If e.Node.Nodes.Count > 0 Then
         ' Calls the CheckAllChildNodes method, passing in the current 
         ' Checked value of the TreeNode whose checked state changed. 
         Me.CheckAllChildNodes(e.Node, e.Node.Checked)
      End If
   End If
End Sub 

[C#] 
// Updates all child tree nodes recursively.
private void CheckAllChildNodes(TreeNode treeNode, bool nodeChecked)
{
   foreach(TreeNode node in treeNode.Nodes)
   {
      node.Checked = nodeChecked;
      if(node.Nodes.Count > 0)
      {
         // If the current node has child nodes, call the CheckAllChildsNodes method recursively.
         this.CheckAllChildNodes(node, nodeChecked);
      }
   }
}

// NOTE   This code can be added to the BeforeCheck event handler instead of the AfterCheck event.
// After a tree node's Checked property is changed, all its child nodes are updated to the same value.
private void node_AfterCheck(object sender, TreeViewEventArgs e)
{
   // The code only executes if the user caused the checked state to change.
   if(e.Action != TreeViewAction.Unknown)
   {
      if(e.Node.Nodes.Count > 0)
      {
         /* Calls the CheckAllChildNodes method, passing in the current 
         Checked value of the TreeNode whose checked state changed. */
         this.CheckAllChildNodes(e.Node, e.Node.Checked);
      }
   }
}

[C++] 
// Updates all child tree nodes recursively.
private:
void CheckAllChildNodes(TreeNode* treeNode, bool nodeChecked) {
    IEnumerator* myEnum = treeNode->Nodes->GetEnumerator();
    while (myEnum->MoveNext()) {
        TreeNode* node = __try_cast<TreeNode*>(myEnum->Current);

        node->Checked = nodeChecked;
        if (node->Nodes->Count > 0) {
            // If the current node has child nodes, call the CheckAllChildsNodes method recursively.
            this->CheckAllChildNodes(node, nodeChecked);
        }
    }
}

// NOTE   This code can be added to the BeforeCheck event handler instead of the AfterCheck event.
// After a tree node's Checked property is changed, all its child nodes are updated to the same value.
void node_AfterCheck(Object* /*sender*/, TreeViewEventArgs* e) {
    // The code only executes if the user caused the checked state to change.
    if (e->Action != TreeViewAction::Unknown) {
        if (e->Node->Nodes->Count > 0) {
            /* Calls the CheckAllChildNodes method, passing in the current
            Checked value of the TreeNode whose checked state changed. */
            this->CheckAllChildNodes(e->Node, e->Node->Checked);
        }
    }
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

TreeView クラス | TreeView メンバ | System.Windows.Forms 名前空間 | OnAfterCollapse | BeforeCollapse | OnBeforeCollapse