Este artigo foi traduzido por máquina. Para visualizar o arquivo em inglês, marque a caixa de seleção Inglês. Você também pode exibir o texto Em inglês em uma janela pop-up, movendo o ponteiro do mouse sobre o texto.
Tradução
Inglês
Esta documentação foi arquivada e não está sendo atualizada.

Classe TreeView

Exibe uma coleção hierárquica de itens com rótulos, cada um representado por um TreeNode.

Namespace:  System.Windows.Forms
Assembly:  System.Windows.Forms (em System.Windows.Forms.dll)

[ComVisibleAttribute(true)]
[DockingAttribute(DockingBehavior.Ask)]
[ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)]
public class TreeView : Control

The Nodes coleção contém todos os o TreeNode objetos que são atribuídos à TreeView controle. sistema autônomo nós de árvore nessa coleção são chamados de nós de árvore raiz.Qualquer nó de árvore, em seguida, adicionado a um nó raiz de árvore é chamado de um nó filho.Como cada TreeNode pode conter uma coleção dos outros TreeNode objetos, talvez seja difícil determinar o local na estrutura de árvore quando você itera através da coleção. Você pode analisar o TreeNode.FullPath seqüência de caracteres usando o PathSeparator string valor para determinar onde um TreeNode rótulo começa e termina.

Você pode exibir imagens ao lado para os nós de árvore, atribuindo um ImageList para o ImageList propriedade e referenciar o valor de índice de um Image no ImageList Para atribuir que Image. Use as seguintes propriedades para atribuir imagens:

  • conjunto o ImageIndex propriedade para o valor de índice do Image Se você deseja exibir quando um nó de árvore não estiver selecionado.

  • conjunto o SelectedImageIndex propriedade para o valor de índice do Image que você deseja exibir quando um nó de árvore é selecionado.

As imagens referenciadas pelo ImageIndex e SelectedImageIndex valores de propriedade são as imagens padrão exibidas por todos os nós de árvore que são atribuídos à Nodes coleção. Nós de árvore individuais podem substituir as imagens padrão, definindo o TreeNode.ImageIndex e TreeNode.SelectedImageIndex Propriedades.

Nós da árvore podem ser expandidos para exibir o próximo nível de nós filho da árvore.O usuário pode expandir o TreeNode clicando no botão de sinal de adição (+), se um for exibido ao lado de TreeNode, ou você pode expandir o TreeNode chamando o TreeNode.Expand método. Para expandir todos os o filho árvore nó níveis no Nodes coleção, telefonar a ExpandAll método. Você pode recolher o filho TreeNode nível chamando o TreeNode.Collapse método ou o usuário pode pressionar o botão de subtração (-), se um for exibido ao lado de TreeNode. Você também pode chamar o TreeNode.Toggle método para alternar entre os estados expandidos e recolhidos.

Nós de árvore também podem exibir caixas de seleção.Para exibir as caixas de seleção, conjunto o CheckBoxes propriedade das TreeView para true. The Checked propriedade estiver definida como true para nós de árvore que estão em um estado selecionado.

ObservaçãoObservação:

configuração o TreeNode.Checked propriedade de dentro do BeforeCheck ou AfterCheck evento faz com que o evento ser disparado várias vezes e pode resultar em comportamento inesperado. Por exemplo, você pode conjunto o Checked propriedade no manipulador de eventos quando você estiver atualizando nós filhos, para que o usuário não precisa expandir e verificar cada uma delas individualmente recursivamente. Para impedir que o evento que está sendo gerado várias vezes, adicione lógica ao seu manipulador de eventos que apenas executa seu código recursivo se o Action propriedade das TreeViewEventArgs não é conjunto para TreeViewAction.Unknown. Para obter um exemplo de como fazer isso, consulte a seção de exemplo do AfterCheck ou BeforeCheck eventos.

Você pode alterar a aparência do TreeView controlar o configuração algumas de suas propriedades de exibição e o estilo. configuração ShowPlusMinus para true Exibe um botão de sinal de adição ou sinal de menos próximo a cada TreeNode que pode ser expandido ou recolhido, respectivamente. configuração the ShowRootLines propriedade para true faz com que o TreeView Para exibir linhas de unir todos os nós de árvore raiz. Você pode exibir linhas que conectam nós de árvore filho para o nó raiz por configuração o ShowLines propriedade para true. configuração the HotTracking propriedade para true sistema autônomo alterações a aparência dos rótulos de nó de árvore quando o ponteiro do mouse passa sobre eles. Quando hot-controladas, os rótulos de nó de árvore assumem a aparência de um hiperlink.Você pode também completamente personalizar a aparência do TreeView controle. Para fazer isso, defina o DrawMode propriedade para um valor diferente de TreeViewDrawMode.Normal e lidar com o DrawNode evento.

ObservaçãoObservação:

Quando configuração o CheckBoxes, Scrollable, ImageIndex, e SelectedImageIndex propriedades em time de execução, o TreeView identificador é recriado (consulte a Control.RecreateHandle) para atualizar a aparência do controle. Isso faz com que todos os nós de árvore a ser recolhido, com exceção do selecionadoTreeNode.

O exemplo de código a seguir demonstra o uso do TreeView controle.

// Populates a TreeView control with example nodes. privatevoid InitializeTreeView()
{
    treeView1.BeginUpdate();
    treeView1.Nodes.Add("Parent");
    treeView1.Nodes[0].Nodes.Add("Child 1");
    treeView1.Nodes[0].Nodes.Add("Child 2");
    treeView1.Nodes[0].Nodes[1].Nodes.Add("Grandchild");
    treeView1.Nodes[0].Nodes[1].Nodes[0].Nodes.Add("Great Grandchild");
    treeView1.EndUpdate();
}


O exemplo de código a seguir, mais complexo exibe informações do cliente um TreeView controle. Os nós da árvore raiz exibem nomes de cliente e o filho nós de árvore exibem os números de pedido atribuídos a cada cliente.Neste exemplo, 1.000 clientes são exibidos com 15 ordens.O redesenho do TreeView é suprimida, usando o BeginUpdate e EndUpdate métodos e uma espera Cursor é exibida enquanto o TreeView cria e pinta a TreeNode objetos. Este exemplo requer que você tenha um Customer objeto que pode conter uma coleção de Order objetos. Ele também requer que você tenha um arquivo de cursor chamado MyWait.cur no diretório de aplicativo e que você criou uma instância de um TreeView controle em um Form.

// The basic Customer class.publicclass Customer : System.Object
{
   private string custName = "";
   protected ArrayList custOrders = new ArrayList();

   public Customer(string customername)
   {
      this.custName = customername;
   }

   public string CustomerName
   {      
      get{returnthis.custName;}
      set{this.custName = value;}
   }

   public ArrayList CustomerOrders 
   {
      get{returnthis.custOrders;}
   }

} // End Customer class // The basic customer Order class.publicclass Order : System.Object
{
   private string ordID = "";

   public Order(string orderid)
   {
      this.ordID = orderid;
   }

   public string OrderID
   {      
      get{returnthis.ordID;}
      set{this.ordID = value;}
   }

} // End Order class// Create a new ArrayList to hold the Customer objects.private ArrayList customerArray = new ArrayList(); 

privatevoid FillMyTreeView()
{
   // Add customers to the ArrayList of Customer objects.for(int x=0; x<1000; x++)
   {
      customerArray.Add(new Customer("Customer" + x.ToString()));
   }

   // Add orders to each Customer object in the ArrayList.foreach(Customer customer1 in customerArray)
   {
      for(int y=0; y<15; y++)
      {
         customer1.CustomerOrders.Add(new Order("Order" + y.ToString()));    
      }
   }

   // Display a wait cursor while the TreeNodes are being created.
   Cursor.Current = new Cursor("MyWait.cur");

   // Suppress repainting the TreeView until all the objects have been created.
   treeView1.BeginUpdate();

   // Clear the TreeView each time the method is called.
   treeView1.Nodes.Clear();

   // Add a root TreeNode for each Customer object in the ArrayList.foreach(Customer customer2 in customerArray)
   {
      treeView1.Nodes.Add(new TreeNode(customer2.CustomerName));

      // Add a child treenode for each Order object in the current Customer object.foreach(Order order1 in customer2.CustomerOrders)
      {
         treeView1.Nodes[customerArray.IndexOf(customer2)].Nodes.Add(
           new TreeNode(customer2.CustomerName + "." + order1.OrderID));
      }
   }

   // Reset the cursor to the default for all controls.
   Cursor.Current = Cursors.Default;

   // Begin repainting the TreeView.
   treeView1.EndUpdate();
}



// The basic Customer class.
public class Customer extends Object
{
    private String custName = "";
    protected ArrayList custOrders = new ArrayList();

    public Customer(String customername)
    {
        this.custName = customername;
    } //Customer

    /** @property 
     */
    public String get_CustomerName()
    {
        return this.custName;
    } //get_CustomerName

    /** @property 
     */
    public void set_CustomerName(String value)
    {
        this.custName = value;
    } //set_CustomerName

    /** @property 
     */
    public ArrayList get_CustomerOrders()
    {
        return this.custOrders;
    } //get_CustomerOrders
} //End Customer class

// The basic customer Order class.
public class Order extends Object
{
    private String ordID = "";

    public Order(String orderid)
    {
        this.ordID = orderid;
    } //Order

    /** @property 
     */
    public String get_OrderID()
    {
        return this.ordID;
    } //get_OrderID

    /** @property 
     */
    public void set_OrderID(String value)
    {
        this.ordID = value;
    } //set_OrderID
} // End Order class

// Create a new ArrayList to hold the Customer objects.
private ArrayList customerArray = new ArrayList();

private void FillMyTreeView()
{
    // Add customers to the ArrayList of Customer objects.
    for (int x = 0; x < 1000; x++) {
        customerArray.Add(new Customer("Customer"
            + ((Int32)x).ToString()));
    }
    // Add orders to each Customer object in the ArrayList.
    for (int iCtr = 0; iCtr < customerArray.get_Count(); iCtr++) {
        Customer customer1 = (Customer)customerArray.get_Item(iCtr);
        for (int y = 0; y < 15; y++) {
            customer1.get_CustomerOrders().Add(new Order("Order"
                + ((Int32)y).ToString()));
        }
    }
    // Display a wait cursor while the TreeNodes are being created.
    get_Cursor().set_Current(new Cursor("MyWait.cur"));
    // Suppress repainting the TreeView until all the objects have
    // been created.
    treeView1.BeginUpdate();
    // Clear the TreeView each time the method is called.
    treeView1.get_Nodes().Clear();
    // Add a root TreeNode for each Customer object in the ArrayList.
    for (int iCtr1 = 0; iCtr1 < customerArray.get_Count(); iCtr1++) {
        Customer customer2 = (Customer)customerArray.get_Item(iCtr1);
        treeView1.get_Nodes().Add(new TreeNode(customer2.get_CustomerName()));
        // Add a child treenode for each Order object in the current
        // Customer object.
        for (int iCtr2 = 0; iCtr2 < customer2.get_CustomerOrders().
            get_Count(); iCtr2++) {
            Order order1 = (Order)customer2.get_CustomerOrders().
                get_Item(iCtr2);
            treeView1.get_Nodes().
                get_Item(customerArray.IndexOf(customer2)).get_Nodes().
                Add(new TreeNode(customer2.get_CustomerName() + "."
                + order1.get_OrderID()));
        }
    }
    // Reset the cursor to the default for all controls.
    get_Cursor().set_Current(Cursors.get_Default());
    // Begin repainting the TreeView.
    treeView1.EndUpdate();
} //FillMyTreeView


Quaisquer membros static (Shared no Visual Basic) públicos deste tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC

o.NET Framework e.NET Compact Framework não oferecem suporte a todas as versões de cada plataforma. Para obter uma lista de versões suportadas, consulte Requisitos de sistema do .NET framework.

.NET Framework

Compatível com: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Compatível com: 3.5, 2.0, 1.0
Mostrar: