TreeViewCancelEventArgs.Node 屬性

定義

取得要核取、展開、摺疊或選取的節點。

C#
public System.Windows.Forms.TreeNode Node { get; }
C#
public System.Windows.Forms.TreeNode? Node { get; }

屬性值

要核取、展開、收合或選取的 TreeNode

範例

下列範例示範如何變更 的 TreeView 折迭狀態,讓所有核取的節點都可見。 首先,所有節點都會折迭,並將處理常式新增至 TreeView.BeforeExpand 事件。 接下來,所有節點都會展開。 TreeView.BeforeExpand事件處理常式會判斷指定的節點是否有已檢查的子節點。 如果節點沒有檢查子系,則會取消該節點的擴充。 若要在按一下節點旁的加號時允許一般節點展開, TreeView.BeforeExpand 事件處理常式會接著移除。

此行為也可以藉由處理 TreeView.BeforeCollapse 事件來實作,如該主題的範例所示。

如需完整的範例,請參閱 TreeView.CheckBoxes 參考主題。

C#
private void showCheckedNodesButton_Click(object sender, EventArgs e)
{
    // Disable redrawing of treeView1 to prevent flickering 
    // while changes are made.
    treeView1.BeginUpdate();

    // Collapse all nodes of treeView1.
    treeView1.CollapseAll();

    // Add the checkForCheckedChildren event handler to the BeforeExpand event.
    treeView1.BeforeExpand += checkForCheckedChildren;

    // Expand all nodes of treeView1. Nodes without checked children are 
    // prevented from expanding by the checkForCheckedChildren event handler.
    treeView1.ExpandAll();

    // Remove the checkForCheckedChildren event handler from the BeforeExpand 
    // event so manual node expansion will work correctly.
    treeView1.BeforeExpand -= checkForCheckedChildren;

    // Enable redrawing of treeView1.
    treeView1.EndUpdate();
}

// Prevent expansion of a node that does not have any checked child nodes.
private void CheckForCheckedChildrenHandler(object sender, 
    TreeViewCancelEventArgs e)
{
    if (!HasCheckedChildNodes(e.Node)) e.Cancel = true;
}

// Returns a value indicating whether the specified 
// TreeNode has checked child nodes.
private bool HasCheckedChildNodes(TreeNode node)
{
    if (node.Nodes.Count == 0) return false;
    foreach (TreeNode childNode in node.Nodes)
    {
        if (childNode.Checked) return true;
        // Recursively check the children of the current child node.
        if (HasCheckedChildNodes(childNode)) return true;
    }
    return false;
}

適用於

產品 版本
.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

另請參閱