MANIPULANDO TREEVIEW

JOAOBENEVIDES 09/09/2016 16:08:52
#466670
Ola Pessoal Pessoa criar um tree nestas condicoes
Menu
---Cadastro
---Usuario
--- acesso
-Parametros

tem algum exemplo para que eu possa me basear
ASHKATCHUP 09/09/2016 17:02:47
#466673
Da uma olhada nesse exemplo que eu fiz: >>Link<<
KERPLUNK 09/09/2016 17:19:31
#466675
Resposta escolhida
Este é o típico caso onde simplesmente entender OOP resolve o problema. OOP não é somente criar classes, é também saber utilizar a estrutura de classes e objetos já disponibilizados no .NET Framework, incluindo os componentes windows form.

Um controle TreeView é simplesmente uma lista de nós. Cada nó pode conter N filhos. Basta criar uma classe que contenha, o texto à ser exibido, qual ítem é o pai e qual o código do ítem, assim:

public class Nos
{
public string Codigo { get; set; }
public string Pai { get; set; }
public string Texto { get; set; }
}


Então, basta criar uma lista deles:

List<Nos> nos = new List<Nos>();
nos.Add(new Nos() { Codigo = [Ô]1[Ô], Pai = [Ô]0[Ô], Texto = [Ô]Pai 1[Ô] });
nos.Add(new Nos() { Codigo = [Ô]2[Ô], Pai = [Ô]0[Ô], Texto = [Ô]Pai 2[Ô] });
nos.Add(new Nos() { Codigo = [Ô]3[Ô], Pai = [Ô]0[Ô], Texto = [Ô]Pai 3[Ô] });
nos.Add(new Nos() { Codigo = [Ô]4[Ô], Pai = [Ô]1[Ô], Texto = [Ô]Filho 1[Ô] });
nos.Add(new Nos() { Codigo = [Ô]5[Ô], Pai = [Ô]1[Ô], Texto = [Ô]Filho 2[Ô] });
nos.Add(new Nos() { Codigo = [Ô]6[Ô], Pai = [Ô]4[Ô], Texto = [Ô]Filho 3[Ô] });
nos.Add(new Nos() { Codigo = [Ô]7[Ô], Pai = [Ô]2[Ô], Texto = [Ô]Filho 4[Ô] });
nos.Add(new Nos() { Codigo = [Ô]8[Ô], Pai = [Ô]7[Ô], Texto = [Ô]Filho 5[Ô] });
nos.Add(new Nos() { Codigo = [Ô]9[Ô], Pai = [Ô]7[Ô], Texto = [Ô]Filho 6[Ô] });
nos.Add(new Nos() { Codigo = [Ô]10[Ô], Pai = [Ô]2[Ô], Texto = [Ô]Filho 8[Ô] });


Então, um simples for...each para adicionar os ítens, procurando seu respectivo nó pai:

foreach (Nos item in nos)
{
if (treeView1.Nodes.Find(item.Pai, true).Count() == 0)
treeView1.Nodes.Add(item.Codigo, item.Texto);
else
treeView1.Nodes.Find(item.Pai,true).First().Nodes.Add(item.Codigo, item.Texto);
}


Os ítens, podem conter inclusive imagens, se quiser.

Mas novamente, isso tudo não seria problema algum se entender o que é OOP. Estude isso e NUNCA MAIS terá problemas para entender absolutamente nada da plataforma .NET

JOAOBENEVIDES 11/09/2016 14:23:52
#466737
KERPLUNK, tenho os menus numa tabela onde sei o que usuario pode acessar ou nao, como faco para correr estes itens e colocar um Check dizendo que ele tem permisao para isto , nao sei se me entende
NILSONTRES 11/09/2016 15:38:15
#466740
Desculpe, sei que não foi isso que vc pediu, mas só um comentário, esse controle eu risquei ele do mapa, muito bonitinho e tudo mais, mas a manutenção é sofrível.
Pense bem.
JOAOBENEVIDES 11/09/2016 18:25:50
#466749
voce usa o que nilsontres
KERPLUNK 11/09/2016 21:41:20
#466761
Citação:

:
KERPLUNK, tenho os menus numa tabela onde sei o que usuario pode acessar ou nao, como faco para correr estes itens e colocar um Check dizendo que ele tem permisao para isto , nao sei se me entende


Sim, entendo o que você quer. E você entendeu o que expliquei de como funciona o componente?
JOAOBENEVIDES 12/09/2016 10:25:17
#466772
é assim ate entindi os modulos , mais como correr os nos atraves de OOP , este 'minha questao pegar os dados gravado na tabela e jogar neste dar um true no checkbox que esta no treeView1
ASHKATCHUP 12/09/2016 21:25:30
#466824
Bom, primeira coisa é que um treeview nao é o melhor componente para se fazer um menu. Eu sugiro o MenuStrip, nativo do Visual Studio, ou algum outro customizado.

Em segundo lugar, para verificar as permissões do usuário, tu pode adicionar uma outra propriedade a classe:

      public class Nos
{
public string Codigo { get; set; }
public string Pai { get; set; }
public string Texto { get; set; }
public bool Acesso {get; set;}
}


E ai, por último, na hora de adicionar ao treeview (lembrando que Menu é melhor):

  foreach (Nos item in nos)
{
if (item.Acesso)
{
if (treeView1.Nodes.Find(item.Pai, true).Count() == 0)
treeView1.Nodes.Add(item.Codigo, item.Texto);
else
treeView1.Nodes.Find(item.Pai,true).First().Nodes.Add(item.Codigo, item.Texto);
}
}
JOAOBENEVIDES 13/09/2016 08:07:42
#466831
ASHKATCHUP, o Menu eu ja fiz estou usando o treeview para mostrar para quem tiver cadastrando quaiz acesso a pessoa tera, qual ideia ele ira clicar no treeview quais acesso ele tem e ira gravar num banco de dados os acessos dele , é isto que preciso
KERPLUNK 13/09/2016 12:18:02
#466846
Então você quer poder marcar checkboxes no treeview, isso? Você habilita ou não o usuário ao menu, se é que entendi direito.
Página 1 de 2 [15 registro(s)]
Tópico encerrado , respostas não são mais permitidas