閱讀英文

共用方式為


TreeView.BeforeCheck 事件

定義

發生於選取樹狀節點選取方塊之前。

public event System.Windows.Forms.TreeViewCancelEventHandler BeforeCheck;
public event System.Windows.Forms.TreeViewCancelEventHandler? BeforeCheck;

事件類型

範例

下列程式碼範例會在使用者變更其核取狀態時,更新 的所有子樹狀節點 TreeNode 。 此程式碼需要您具有 FormTreeView 的 ,且其 TreeNodeCollection 中具有 TreeNode 物件。 TreeNodeCollection應該有具有子節點的樹狀節點。

// 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);
      }
   }
}

備註

注意

TreeNode.Checked從 或 AfterCheck 事件中 BeforeCheck 設定 屬性會導致事件多次引發,而且可能會導致非預期的行為。 例如,當您遞迴更新子節點時,可能會在事件處理常式中設定 Checked 屬性,讓使用者不需要個別展開和檢查每個節點。 若要防止多次引發事件,請將邏輯新增至事件處理常式,只有在 的 TreeViewEventArgs 屬性未設定 TreeViewAction.Unknown 為 時 Action ,才會執行遞迴程式碼。

如需如何處理事件的詳細資訊,請參閱 處理和引發事件

適用於

產品 版本
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

另請參閱