TreeView.CheckBoxes Özellik

Tanım

Ağaç görünümü denetimindeki ağaç düğümlerinin yanında onay kutularının görüntülenip görüntülenmeyeceğini belirten bir değer alır veya ayarlar.

C#
public bool CheckBoxes { get; set; }

Özellik Değeri

true ağaç görünümü denetimindeki her ağaç düğümünü yanında bir onay kutusu görüntülenirse; aksi takdirde , false. Varsayılan değer: false.

Örnekler

Aşağıdaki kod örneği, denetlenen tüm 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 alt öğeler denetlenmediyse, 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.

C#
using System;
using System.Drawing;
using System.Windows.Forms;

public class Form1 : Form
{
    private TreeView treeView1;
    private Button showCheckedNodesButton;
    private TreeViewCancelEventHandler checkForCheckedChildren;

    public Form1()
    {
        treeView1 = new TreeView();
        showCheckedNodesButton = new Button();
        checkForCheckedChildren = 
            new TreeViewCancelEventHandler(CheckForCheckedChildrenHandler);

        this.SuspendLayout();

        // Initialize treeView1.
        treeView1.Location = new Point(0, 25);
        treeView1.Size = new Size(292, 248);
        treeView1.Anchor = AnchorStyles.Top | AnchorStyles.Left | 
            AnchorStyles.Bottom | AnchorStyles.Right;
        treeView1.CheckBoxes = true;

        // Add nodes to treeView1.
        TreeNode node;
        for (int x = 0; x < 3; ++x)
        {
            // Add a root node.
            node = treeView1.Nodes.Add(String.Format("Node{0}", x*4));
            for (int y = 1; y < 4; ++y)
            {
                // Add a node as a child of the previously added node.
                node = node.Nodes.Add(String.Format("Node{0}", x*4 + y));
            }
        }

        // Set the checked state of one of the nodes to
        // demonstrate the showCheckedNodesButton button behavior.
        treeView1.Nodes[1].Nodes[0].Nodes[0].Checked = true;

        // Initialize showCheckedNodesButton.
        showCheckedNodesButton.Size = new Size(144, 24);
        showCheckedNodesButton.Text = "Show Checked Nodes";
        showCheckedNodesButton.Click += 
            new EventHandler(showCheckedNodesButton_Click);

        // Initialize the form.
        this.ClientSize = new Size(292, 273);
        this.Controls.AddRange(new Control[] 
            { showCheckedNodesButton, treeView1 } );

        this.ResumeLayout(false);
    }

    [STAThreadAttribute()]
    static void Main() 
    {
        Application.Run(new Form1());
    }

    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

Varsa, hem ağaç düğümü etiketinin hem de ağaç düğümünün Imagesolunda bir onay kutusu görüntülenir. Onay kutuları, kullanıcının bir kerede birden fazla ağaç düğümü seçmesine olanak tanır.

CheckBoxes bir TreeView özelliği olarak trueayarlandığında ve StateImageList özelliği ayarlandığında, içinde yer alan TreeView her TreeNode biri, sırasıyla işaretlenmemiş veya denetlenmiş bir durumu belirtmek için içindeki ilk ve ikinci görüntüleri StateImageList görüntüler. Ancak, aşağıdaki durum oluşursa görüntülenen görüntüler farklı olabilir: Düğümün değeri 0 veya 1 dışında bir değere ayarlanırsa ve CheckBoxes üst TreeView öğesinin özelliği olarak falseayarlanırsaSelectedImageIndex, SelectedImageIndex ayarlanmadığını belirtmek için otomatik olarak -1 olarak sıfırlanmaz. Bu durumda, belirtilen dizin konumundaki durum görüntüsü gösterilir. yeniden olarak ayarlanırsa CheckBoxestrue , öğesinin birinci ve ikinci görüntüleri StateImageList sırasıyla işaretli veya işaretsiz bir durumu göstermek için gösterilir.

Not

Özelliği çalışma zamanında ayarlarken CheckBoxes , denetimin TreeView görünümünü güncelleştirmek için tanıtıcı yeniden oluşturulur (bkz Control.RecreateHandle. ). Bu, seçilen TreeNodedışında tüm ağaç düğümlerinin daraltılmasına neden olur.

Ş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.