Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

tesla

"Paginação" C#

Recommended Posts

Estou fazendo um programa com funcionalidades básicas, e ele vai aceitar plugins DLL. Mas tenho uma dúvida. Para cada função, ele deve exibir uma configuração de tela diferente, ou seja, elementos diferentes. É a mesma ideia de um TabControl. Mas ao invés de exibir as abas eu queria que ficasse um panel com as opções em uma treeview, e um panel que vai mostrar os elementos que a função carrega.

 

Pra isso eu criei um splitcontainer, e no painel da esquerda criei uma treeview com as opções. Mas como eu vou fazer para quando o usuário selecionar uma opção, as funcionalidades aparecerem no outro panel?

 

A ideia é a mesma de um painel de configuração que muitos programas tem, onde na esquerda tem uma lista com as configurações, e na direita a medida que o usuário seleciona a configuração, aparecem as opções da mesma.

 

Como faço isso? É algo parecido com um sistema de "paginação".

 

Edit-

Eu teria que criar cada elemento e configurá-lo via código quando fosse selecionada uma opção?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, cara, há duas opções, uma bem simples mas você não aprenderia muito sobre a função, e outra que seria mais complicada porem você teria total controle sobre tudo:

 

1º - Os Panels ocultos:

 

Ao invés de adicionar o SplitPanel, adicione 2 Panels separados, no panel da esquerda você adiciona a TreeView, e o painel da direita você deixa com uma imagem ou um texto padrão do tipo "Selecione uma configuração para exibir suas opções". Crie um panel para cada configuração diferente com suas opções e botões porem deixe todos eles com a propriedade Visible no False.

 

Assim que você clicar em qualquer configuração do treeView você muda cada Panel referente a configuração clicada para True na propriedade visible:

 

Exemplo:

 

Cliquei na configuração "Geral":

 

private Void Geral_click(...) {

PanelGeral.Visible = true;

}

 

 

Acredito que você tenha entendido minha ideia.

 

2ª - Cafeina e C#:

Aqui você faria a mesma coisa porem você teria que adicionar tudo por programação, seguindo o mesmo exemplo da anterior:

 

Private Void Geral_Click(...) {

Panel PanelGeral = new Panel();
Controle1 ctl1 = new Controle1(); //Pode ser qualquer componente

//configure todos os controles

ctl1.position.X = <int X>;
ctl1.position.Y = <int Y>;
ctl1.Text = ...;
//etc

//adicione no panel

PanelGeral.controls.add(ctl1);
PanelGeral.Position.X = <intX>;
PanelGeral.position.Y = <intY>;
//adicione ao form
Form1.controls.add(PanelGeral);
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gostei das soluções. Estive dando uma pesquisada e encontrei a tecnologia MEF do .NET. Acho que principalmente pelo meu software girar em torno de plugins, ele é a melhor alternativa! Achei um video no youtube dando um exemplo muito superficial de MEF, fiz uma calculadora que implementa as operações de multiplicar e dividir só pra testar. Gostei muito da forma de trabalho dele, é muito simples.

 

Porém quero estudar a fundo o MEF para poder explorar seus recursos da melhor forma possível. Pesquisei material, mas não encontrei muita coisa, algo como uma apostila. Então estou dando uma lida na própria documentação da microsoft. O único problema é que lá não tem uma sequência de estudo, é tudo separado para sua respectiva especificação, como deve ser uma documentação.

 

Alguém teria algum material disponível sobre MEF? Apostila, tutorial, algo do tipo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.