TreeView.BeforeExpand Olay

Tanım

Ağaç düğümü genişletilmeden önce gerçekleşir.

C#
public event System.Windows.Forms.TreeViewCancelEventHandler BeforeExpand;
C#
public event System.Windows.Forms.TreeViewCancelEventHandler? BeforeExpand;

Olay Türü

Örnekler

Aşağıdaki kod örneği, tüm işaretli düğümlerin görünür olması için daraltma TreeView durumunun nasıl değiştirildiğini gösterir. İlk olarak, tüm düğümler daraltılır ve olay için BeforeExpand bir işleyici eklenir. Ardından tüm düğümler genişletilir. Olay işleyicisi BeforeExpand , belirli bir düğümün denetlenen alt düğümlere sahip olup olmadığını belirler. Bir düğümde denetlenen alt öğeler yoksa, söz konusu düğüm için genişletme iptal edilir. Bir düğümün yanındaki artı işaretine tıklandığında standart düğüm genişletmesine izin vermek için olay BeforeExpand işleyicisi kaldırılır.

Bu davranış, söz konusu konuya ilişkin BeforeCollapse örnekte gösterildiği gibi olayı işleyerek de uygulanabilir.

Tam örnek için başvuru konusuna CheckBoxes bakın.

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

Açıklamalar

Olayları işleme hakkında daha fazla bilgi için bkz. Olayları İşleme ve Oluşturma.

Şunlara uygulanır

Ürün Sürümler
.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

Ayrıca bkz.