TREEVIEW - COMO CONTROLAR ACOES

LUIS.HERRERA 01/07/2013 14:19:47
#425409
Montei um Treeview com dados fixos Ok.
Pego os itens dele que estão cadastrados no banco (permissões) 0k
Percorro o Treeview, comparo se item é igual a permissão cadastrada, se sim marco o ckeckbox, do contrário vou ao próximo item. Ok

Problema 1: ao abrir o formulário, a edição dos dados fica habilitada, ou seja, posso marcar ou desmarcar itens livremente.

Preciso que o treeview permita apenas visualizar seu conteúdo, rolando a barra de rolagem, abrindo e fechando os nós (Pais), mas não permita selecionar ou desmarcar as checkbox dos itens.

Marcar ou desmarcar um item só pode ser permitido, após clicar no botão Incluir ou Editar. Como eu faço isso?

A propriedade Enabled bloqueia todo o controle, não sendo possível usar a barra de rolagem ou ver o conteúdo dos nós filhos.

Problema 2: Ao marcar ou desmarcar itens, como faço para pegar somente os itens com ckekbox marcados exceto os nós pai?
LUIS.HERRERA 03/07/2013 17:03:08
#425526
Bem como ninguém respondeu e não encontrei a tal propriedade ReadOnly no treeview, apesar de informada em alguns sites, não sei onde encontraram ela ou devem ter visto na sexta-feira as 20h, depois de 20 cervejas.

A solução que encontrei pro problema 1, foi criar uma variável booleana no início do form = false. Quando preciso editar mudo para true, e no evento BeforeCheck do controle, texto o estado da variável, se for false, cancelo o evento. Funcionou, mas vejo isso como uma gambiarra por falta do recurso do controle.

Aqui deixo uma indignação à Microsoft também. Por mais que melhorem suas ferramentas, parece que fazem questão de deixar coisas incompletas como essa. Porque não padronizam todos os controles com os mesmos recursos?
Se um tem ReadOnly, porque outros não?
Se um permite mudar a cor da fonte, fundo, por que outros não?
Se permite mudar a cor de fundo e da fonte, porque não permite mudar a cor da borda, do enabled, etc...
Melhor ainda, porque não criam logo um controle Theme como existe pro ToolStrip, MenuStrip. etc... onde se definiria facilmente todas as cores para cada item dos controles usados, de uma única forma, como Cores ao receber foco, perder foco, cor = ao scheme do Windows, e assim por diante?

Vejo que isso é feito para obrigar a comprar componentes de terceiros, já que os dela são incompletos e [Ô]FEIOS[Ô].


Bem pro problema 2 fiz um método recursivo que percorre todos os controles, a cada nó encontrado, chamo outro método que percorre um Switch com os nomes dos itens que devem ser descartados (nós pai), se encontrar devolve false e vai pro próximo, se não encontrar devolve true e então incluo o item num ArrayList que será passado ao médoto DAL de gravar no banco.

Valeu, espero que ajude alguém ....
Tópico encerrado , respostas não são mais permitidas