Vous êtes sur la page 1sur 3

Trabalhando com o controle TreeView em C # http://translate.googleusercontent.com/translate_c?hl=pt-BR&sl=en&u=...

Servimos 2.120.289 usuários no mês Seu "Thank You" Significa muito


passado

Início | Fóruns | Vídeos | Fotos | Downloads | Blogs | Entrevistas | Empregos | Iniciantes | Formação | Consultoria Envie um Artigo Envie um Blog

Pesquisa: Vá Pesquisa avançada »


Login

Enter UserID or Email Início » Windows Forms »Trabalhando com TreeView Controle em C #

●●●●●●●●●●●●●●
Trabalhando com o controle TreeView em C # Rank Autor:
Remember Me Total de visualizações: 320083
Total de downloads: 7098
Entrar Registre-se Por Lysle Scott 16 abril de 2007
Esqueci minha senha Este é um artigo abordando alguns dos princípios básicos do trabalho com um controle TreeView, o artigo irá abordar de forma dinâmica acrescentando TreeNodes a um controle TreeView, buscando a nós encont rar e destacar um único nó ou uma coleção de
Esqueceu-se Usuário nós.
Porquê registar-se

Imprimir Postar um comentário Artigos semelhant es Compartilhe


Ir para Enviar a um amigo Bookmark outros artigos do Autor
Tecnologia
W ebsite Baixar arquivos: TreeViewBasicsPack.zip

Patrocinado pela Patrocinado pela


Introdução Seja um patrocinador
A maioria de artigos similares Leia Mais Recente Top Rated
Este é um pequeno artigo aborda algumas das noções básicas de trabalhar com um controle TreeView, o artigo irá abordar de forma dinâmica acrescentando TreeNodes a um controle TreeView, buscando a nós encontrar e destacar um único nó ou uma coleção de nós correspondentes a um t ermo de busca contra o É tag TreeNode, text o ou propriedades
de nome, e manualmente ou programaticamente selecionar nós.
Usando o Controle TreeView

TreeView cont role em 3,5 asp.net

Usando o controle TreeView do W indows Forms

TreeView em Silverlight

Expandir e Recolher todos os nós de um TreeView em


Silverlight 3

Leia mais ...

Figura 1: Buscando um controle TreeView a propriedade Text.

Figura 2: Buscando um controle TreeView pela propriedade Nome.

Seja um patrocinador

Recursos

Quem Somos
ASP.NET Hosting
Autores
Capítulos
Resenhas de livros
Livros C #
# Consultoria C
# Formação C
Downloads
Mídia Kit
Notícias e Eventos
Newsletter
Prêmios
Opiniões
Recursos Figura 3: Buscando um controle TreeView pela propriedade Nome.
Dicas
Ferramentas
Grupos de Usuários

Nossa Rede

. Heaven NET
# Esquina C
DbTalks
Entrevista Corner
Longhorn Corner
Mindcracker
VB.NET Céu
Figura 4: Criação de um nó com propriedades específicas.

A Solução

A solução de aplicação contém um único projeto Windows Application composta; todo o código fornecido em apoio a este projeto está contido em duas classes de forma, um é o formulário principal que contém o TreeView e alguns controles utilizados para exibir informações sobre o nó (Figuras 1, 2 e 3) e para executar as pesquisas para um
nó específico ou grupo de nós com base em um termo de pesquisa fornecida pelo usuário. A classe de outra forma (Figura 4) é usado para criar novos nós, dentro da aplicação, este formulário é exibido, selecionando um nó no TreeView e, em seguida, selecionando a opção "Adicionar nó" opção no menu de contexto.

Não há nada personalizado ou fantasia feito com qualquer um dos componentes relacionados TreeView nesta aplicação, é apenas uma demonstração de como trabalhar com um TreeView dentro do contexto de uma aplicação Windows Forms.

O Código: Forma 1 - O formulário principal

A classe do formulário principal é um formulário padrão janela com alguns controles adicionados, o formulário contém um controle de recipiente dividido; no lado esquerdo do controle é um controle TreeView, no lado direito do separador são quatro caixas de grupo, a caixa de primeiro grupo contém um conjunto de rótulos e caixas de texto
usado para exibir informações sobre um nó selecionado, as caixas de grupo restante contêm rótulos, caixas de texto e botões utilizados para realizar diferentes pesquisas de TreeView do nó a coleção com base nó texto, nome, ou valores de marca.

A funcionalidade contida na classe é dividida em várias regiões, a aula começa com as importações padrão, a declaração de namespace, e declaração de classe:

using System;
utilizando System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
usando System.Text;
using System.Windows.Forms;
EasyTreeView namespace
(
classe parcial pública Form1: Form
(
public Form1 ()
(
InitializeComponent ();
/ / Começar por adicionar um nó TreeView base
TreeNode TreeNode mainNode = new ();
mainNode.Name = "mainNode";
mainNode.Text = "principal";
. Este treeView1.Nodes.Add (mainNode);
)
O construtor da classe forma cria um nó principal no controle TreeView, em tempo de execução, o usuário pode selecionar esse nó (ou qualquer nó filho originários forma este nó) para adicionar outros nós para o TreeView. A classe de formulário também contém um menu de contexto, este menu de contexto contém duas opções, uma para
adicionar um novo nó, e outra para excluir um nó existente. Quando um novo nó é solicitado, o aplicativo abre uma instância de diálogo do novo nó, isso força o usuário de diálogo para definir o nome, texto e valores de marca para o novo nó. O valor da marca pode ser qualquer objeto, mas neste exemplo, a marca se limita à realização de
um valor de cadeia adicionais. Uma vez que os valores foram coletados a partir do diálogo, o novo nó é preenchida com as informações e acrescentou que o nó selecionado do TreeView.
Quando um nó é excluído, o nó selecionado e todos os seus filhos são removidos do TreeView; uma coisa a notar aqui é que, se você está associando um objeto com um nó através da sua marca, você vai querer escrever o manipulador que a destruam objeto antes de excluir o nó selecionado.
# Region Adicionar e remover nós
/ / / <summary>
/ / / Dê um nó no TreeView usando uma caixa de diálogo
/ / / Forçando o usuário a definir as propriedades de nome e texto
/ / / Do nó
/ / / </ Summary>
/ / / name="sender"> <param </ param>
/ / / name="e"> <param </ param>
cmnuAddNode_Click private void (object sender, EventArgs e)
(
n newNode nova newNode = ();
n.ShowDialog ();
nod TreeNode TreeNode novo = ();
= N.NewNodeName.ToString nod.Name ();
= N.NewNodeText.ToString nod.Text ();
= N.NewNodeTag.ToString nod.Tag ();
n.Close ();
treeView1.SelectedNode.Nodes.Add (nod);
treeView1.SelectedNode.ExpandAll ();
)
/ / / <summary>
/ / / Remover o nó selecionado e crianças
/ / / </ Summary>
/ / / name="sender"> <param </ param>
/ / / name="e"> <param </ param>
cmnuRemoveNode_Click private void (object sender, EventArgs e)
(
treeView1.SelectedNode.Remove ();
)

# Endregion
A próxima região de código é usado para manipular eventos TreeView, existem apenas dois eventos tratados nesta seção, o TreeView Depois do evento Select e TreeView clique do evento. Depois de seleccionar o manipulador de eventos é usado para preencher as caixas de texto usado para exibir informações do nó selecionado (o seu nome,
o texto, Tag e propriedades do texto do pai. A descoberta funções descritas posteriormente destacar que todos os nós encontrados em resposta a uma pesquisa, definindo a cor de fundo de cada nó correspondente ao amarelo, o manipulador de eventos click do TreeView é usado para remover todos esses destaques.

# Region Treeview manipuladores de eventos


/ / / <summary>
/ / Mostra informações sobre o nó selecionado
/ / / </ Summary>
/ / / name="sender"> <param </ param>
/ / / name="e"> <param </ param>
treeView1_AfterSelect private void (object sender, TreeViewEventArgs e)
(
tente
(
txtName.Text = "";
txtParentName.Text = "";
txtText.Text = "";
txtTag.Text = "";
= TreeView1.SelectedNode.Name.ToString txtName.Text ();
= TreeView1.SelectedNode.Text.ToString txtText.Text ();
= TreeView1.SelectedNode.Tag.ToString txtTag.Text ();
= TreeView1.SelectedNode.Parent.Text.ToString txtParentName.Text ();
)
catch ()
)
/ / / <summary>
/ / / Nós Clear marcado pela encontrar funções
/ / / </ Summary>
/ / / name="sender"> <param </ param>
/ / / name="e"> <param </ param>
treeView1_Click private void (object sender, EventArgs e)
(
ClearBackColor ();
)
# Endregion
A região próxima da classe é usado para localizar um nó por sua propriedade de nome. O método para encontrar um nó, seu nome é a única função find directamente apoiados pelo TreeView e, se você quiser encontrar um nó, algo que não seja seu nome, você terá que escrever seus próprios métodos para o fazer. Este manipulador de
eventos click preenche uma matriz de nós com uma matriz de nós com nomes iguais. O método find aceita argumentos, o primeiro argumento é o termo da busca eo segundo é um valor booleano para determinar se ou não nós filhos também devem ser incluídos na pesquisa, neste caso o termo de pesquisa são coletados a partir de uma
caixa de texto a forma ea possibilidade de nós filho procura é habilitado pela configuração da tese segundo a verdade.
Uma vez que a coleção de nós é criado, cada nó correspondente tem sua cor definida para o amarelo de volta, de modo a destacar o nó no TreeView. Antes de definir a cor de fundo dos nós correspondentes, todos os outros nós do TreeView são definidas voltar a ter fundo branco, chamando o método Clear Back Color.

# region Procurar por nome


/ / / <summary>

1 de 3 03/10/2010 21:51
Trabalhando com o controle TreeView em C # http://translate.googleusercontent.com/translate_c?hl=pt-BR&sl=en&u=...

/ / / Usa o treeview é construído em função de encontrar-


/ / / A procura de um nó
/ / / </ Summary>
/ / / name="sender"> <param </ param>
/ / / name="e"> <param </ param>
btnFindNode_Click private void (object sender, EventArgs e)
(
ClearBackColor ();
tente
(
[] = Tn treeView1.Nodes [0]. TreeNode Nodes.Find (txtNodeSearch.Text, true);
for (int i = 0; tn.Length i <; i + +)
(
treeView1.SelectedNode = tn [i];
treeView1.SelectedNode.BackColor = cor amarela.;
)
)
catch ()
)
# Endregion
A próxima região de código é usado para remover a cor de fundo de todos os nós destacando em uma pesquisa anterior. Esse processo depende de dois métodos distintos. O primeiro método cria uma instância de um conjunto de nó de árvore contendo todos os nós em forma de TreeView o controle. Cada um dos nós na coleção é passado
para um segundo método (Clear recursiva), o segundo método é passado o nó atual. A Clear loops método Recursivo através de todos os nós contidos no nó em nós coleção passada e define a cor de fundo de cada um dos nós para a cor branca. Cada nó é então passada para trás recursivamente o mesmo método recursivo claro onde nó nó
de cada coleção é processado até que não haja mais nodos restantes para processar. Desta forma, cada criança e Nó em toda a árvore é processada.
Enquanto este processo é usado apenas para definir as costas de cor branca para cada nó, a mesma abordagem pode ser utilizada quando a árvore inteira deve ser processado, de fato, os métodos de pesquisa ainda vai fazer exatamente isso.

# Region Remover BackColor


/ / Recursivamente percorrer os nós do treeview
/ / E redefinir backcolors para branco
ClearBackColor private void ()
(
nós TreeNodeCollection = treeView1.Nodes;
foreach (TreeNode n em nós)
(
ClearRecursive (n);
)
)
/ / Função chamada pelo ClearBackColor
private void ClearRecursive (TreeNode TreeNode)
(
foreach (TreeNode tn em treeNode.Nodes)
(
tn.BackColor = Cor Branca.;
ClearRecursive (tn);
)
)

# Endregion
A próxima região de código é usado para localizar um nó ou nós com propriedades de texto correspondente a uma expressão de busca. O formulário contém uma caixa de grupo usado para definir um termo de pesquisa de texto e evocar o método a partir de um clique do botão manipulador de eventos. O primeiro clique no botão limpa
todos nós destaque, chamando o método Clear Back Color, após os nós são todos restaurados para fundo branco, o condutor chama o método Find By texto, este método funciona muito parecido com o método descrito para limpar a cor de fundo. O método reúne uma coleção de nós de árvore e, em seguida, passa por cada nó para o método
recursivo. O método find recursivo olha para nós com propriedades de texto compatível com a expressão de pesquisa e, quando for encontrada uma correspondência, define a cor de fundo para amarelo. Cada nó processado é passado para o método find recursivo, que continuarão a examinar cada nó até que todos os nós da árvore têm sido
avaliados.

# Region Procura por Texto


/ / / <summary>
/ / Pesquisa / para nós pelo texto exige uma função especial
/ / / Esta função recursivamente varre o treeview e
/ / / Marcas itens correspondentes.
/ / / </ Summary>
/ / / name="sender"> <param </ param>
/ / / name="e"> <param </ param>
btnNodeTextSearch_Click private void (object sender, EventArgs e)
(
ClearBackColor ();
FindByText ();
)
FindByText private void ()
(
nós TreeNodeCollection = treeView1.Nodes;
foreach (TreeNode n em nós)
(
FindRecursive (n);
)
)
private void FindRecursive (TreeNode TreeNode)
(
foreach (TreeNode tn em treeNode.Nodes)
(
/ / Se as propriedades do texto de partida, o item cor
if (tn.Text ==. txtNodeTextSearch.Text isso)
tn.BackColor = cor amarela.;
FindRecursive (tn);
)
)

# Endregion
A próxima região é usada para conter os métodos utilizados para encontrar nós pelo seu valor de marca (que neste caso é uma string), e realce em amarelo todos os nós correspondentes. Estes métodos de trabalho muito parecido com o último método, com a ressalva de que os jogos são determinadas pela sua marca valores em vez de texto
seus valores.
# Region Pesquisar por tag
/ / / <summary>
/ / Pesquisa / para nós por tag requer uma função especial
/ / / Esta função recursivamente varre o treeview e
/ / / Marcas itens correspondentes. Tags podem ser objeto, neste
/ / / Caso, eles são usados apenas para conter strings
/ / / </ Summary>
/ / / name="sender"> <param </ param>
/ / / name="e"> <param </ param>
btnNodeTagSearch_Click private void (object sender, EventArgs e)
(
ClearBackColor ();
FindByTag ();
)
FindByTag private void ()
(
nós TreeNodeCollection = treeView1.Nodes;
foreach (TreeNode n em nós)
(
FindRecursiveTag (n);
)
)
private void FindRecursiveTag (TreeNode TreeNode)
(
foreach (TreeNode tn em treeNode.Nodes)
(
/ / Se as propriedades do texto de partida, o item cor
if (tn.Tag.ToString () ==. txtTagSearch.Text isso)
tn.BackColor = cor amarela.;
FindRecursiveTag (tn);
)
)

# Endregion
Isso envolve acima de todos os códigos necessários para adicionar e remover nós e para procurar nós específicos com base em seu nome, texto ou valores de marca.
O Código: Formulário 2 - Formulário de novo nó

O código fornecido no formulário novo nó é utilizado apenas para capturar o usuário forneceu valores usados para preencher nó recém-criado o nome de um texto, e propriedades de marca. O formulário é exibido como uma janela e aparece na resposta ao usuário solicitar a adição de um novo nó a partir do formulário principal do aplicativo.
As importações, a declaração de namespace, e declaração de classe estão na configuração padrão de uma classe de formulário:

using System;
utilizando System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
usando System.Text;
using System.Windows.Forms;
EasyTreeView namespace
(
classe newNode parcial pública: Formulário
(

Na sequência da declaração da classe, três variáveis de membros locais são definidos, cada um dos quais é usado para armazenar o nome de usuário fornecido, texto e propriedades da marca:
# Variáveis locais região
mNewNodeName cadeia privada;
mNewNodeText cadeia privada;
mNewNodeTag cadeia privada;
# Endregion
O construtor do formulário está na configuração padrão:
/ / / <summary>
/ / / Construtor padrão
/ / / </ Summary>
NewNode pública ()
(
InitializeComponent ();
)
A próxima região de código é usado para definir três propriedades públicas utilizadas para conter o novo nome de nó, texto e valores de marca. Depois que o usuário definir esses valores desta forma, a principal forma recolhe essas propriedades e atribui-los a novo nó nome do texto, e propriedades de marca.
# Region Propriedades da classe
NewNodeName cadeia pública
(
obter
(
mNewNodeName retorno;
)
conjunto
(
= Valor mNewNodeName;
)
)
NewNodeText cadeia pública
(
obter
(
mNewNodeText retorno;
)
conjunto
(
= Valor mNewNodeText;
)
)
cadeia pública NewNodeTag
(
obter
(
mNewNodeTag retorno;
)
conjunto
(
= Valor mNewNodeTag;
)
)

# Endregion
Este manipulador de eventos, clique no botão destina-se a forçar o usuário a definir os três valores, uma vez que cada um é definido, as propriedades relacionadas são passados os valores corretos ea forma está fechado.
btnSubmit_Click private void (object sender, EventArgs e)
(
if (txtNewNodeName.Text! = string. Vazio)
(
NewNodeName txtNewNodeName.Text =;
)
mais
(
. MessageBox Show ("Nome do nó.");
retorno;
)
if (txtNewNodeText.Text! = string. Vazio)
(
NewNodeText txtNewNodeText.Text =;
)
mais
(
. MessageBox Show ("Fornecer novo nó de texto");
retorno;
)
if (txtTag.Text! = string. Vazio)
(
NewNodeTag txtTag.Text =;
)
mais
(
. MessageBox Show ("Fornecer novo nó de texto");
retorno;
)
isso). Close (;

2 de 3 03/10/2010 21:51
Trabalhando com o controle TreeView em C # http://translate.googleusercontent.com/translate_c?hl=pt-BR&sl=en&u=...

Isso é tudo que existe para ela. Uma vez que este código é executado, pode clique direito sobre o nó principal e adiciona tantos nós e nós filhos como acharem melhor. O usuário pode entrar na expressão de busca válida em qualquer uma das optons buscar e realçar nós correspondentes, ou o usuário pode selecionar os nós da árvore e ler
o nome, texto e marca-mãe valores associados a partir do nó selecionado.

Resumo.

Naturalmente, existem inúmeras maneiras de usar o controle TreeView e esta simples demonstração não começar a explorar a variedade de opções disponíveis. A única intenção da manifestação era fornecer uma descrição de como pode-se adicionar e remover nós, obter informações de nós selecionados, e procure por nós específicos com
base no nó é o nome do texto, e valores de marca.

Iniciar sessão para adicionar seu conteúdo e código-fonte para este artigo

Sobre o autor Procurando Consulting # C?

Scott Lysle C # Consulting é fundada em 2002 pelos fundadores do C # Corner. Ao contrário de uma empresa de consultoria tradicional, nossos consultores são conhecidos especialistas em bem. NET e muit os deles são
Freelance desenvolvedor de software residente no Alabama. Licenciatura, mest rado Graus de W ichit a State University. Passei a primeira metade de minha carreira trabalhando em controles MVPs, aut ores e instrutores. Nós nos especializamos no desenvolvimento Microsoft. NET e utilizar Desenvolvimento Ágil e Programação Extreme prát icas para proporcionar rit mo acelerado resultados de
de aeronaves e exibições e naquela época eu trabalhava na cabina de pilot agem para os 58-OH AHIP, o AH-1W , o V-22, F-22, o C-130J, o C-5 AMP, AW ACS, JPATS, e alguns outros. Desde retorno rápido. Nosso modelo de desenvolvimento de soft ware é uma mistura de Desenvolvimento Ágil, SDLC tradicionais e modelos de Cachoeira.
1997, t enho sido muito envolvidos com o W indows e desenvolviment o web, desenvolvimento de aplicativos geográficos, desenvolvimento de produtos eletrônicos de consumo (embedded
Linux / Java), mas ainda trabalham às vezes em aviões militares e projetos, o mais recente dos quais foi o helicóptero de transporte presidencial. Cost umo trabalhar primeiramente com C /
C + +, Java, VB e C #.

Clique aqui para saber mais sobre o C # Consulting.

Tente Safari Books Online - 15 dias grátis + 15% de desconto para 1 ano
Tente Safari Books Online - 15 dias grátis + 15% de desconto para 1 ano

Escreva um Comentário comentários, ou perguntas sobre este artigo Patrocinado pela

Assunto:
Comentário:

Enviar

Seja um pat rocinador

Comentários
Pergunta de venkat Em 26 de fevereiro de 2009
Como realizar uma operação diferente para cada nó selecionado

Responder | Email | Apagar | Modificar |

Re: Pergunta de Scott Em 01 de março de 2009


Eu não tenho certeza do que você precisa fazer, mas se você precisar manipular os nós de forma diferente você pode colocar algo na propriedade de tag que irá dizer-lhe como lidar com um evento de clique ou algo assim, ou você pode estender o nó e adicionar propriedades adicionais para que lhe diga o que você precisa saber em resposta ao evento que está sendo manuseado.

Responder | Email | Apagar | Modificar |

salvar minha acena por khaled Em 29 de maio de 2009


muito obrigado sobre este exemplo
mas como eu posso salvar a nós depois de adicioná-lo, eu aviso que foi embora após colseing programa
preciso de ajuda
obrigado

Responder | Email | Apagar | Modificar |

vista a funcionalidade de árvores em datagrid por Ashish Em 29 de julho de 2009


oi,
Eu quero a funcionalidade de exibição de árvore no datagrid. significa que quando eu clico no seu nó eo nó filho fica visível na linha de grade .....

Responder | Email | Apagar | Modificar |

Obrigado por Airton em 14 de setembro de 2010

Obrigado, irmão.
Airton

Responder | Email | Apagar | Modificar |

Trabalhando com o controle TreeView em C # por David em 22 de setembro de 2010


Muito obrigado por um artigo interessante

Responder | Email | Apagar | Modificar |

Hospedado por MaximumASP|Encontrou um link quebrado?|Fale Conosco|Termos e condições|Política de Privacidade|Mapa do Site|Sugerir uma Idéia|Mídia Kit Versão Atual: 5.2010.8.14
© 2010 conteúdos de direitos autorais de seus autores. Resto tudo Mindcracker copyright. Todos os direit os reservados.

Canais: Empregos | Entrevistas | Consultoria | Formação | Fotos | Autores | Dicas | Fóruns | E-Books | Blogs
Programação: C # | Visual Basic | ASP.NET e Desenvolvimento W eb | C + + | Out ro. NET | W indows Vista | XAML | Tut oriais
Patrocinadores: ASP.NET 4 Host ing | Clickat ell | DevExpress | DynamicPDF | Nevron | Redgate Software | Safari Books Online

3 de 3 03/10/2010 21:51

Vous aimerez peut-être aussi