none
Como Criar TABPAGES em um TABCONTROL (Dinâmicas) com os nomes armazenados em uma tabela de um banco SQL Server RRS feed

  • Pergunta

  • Boa noite pessoal!

    Estou desenvolvendo um controle de tarefas, só que o usuário cadastrará no banco quais são as etapas que um projeto poderá ter ex: Análise, Risco, Desenvolvimento, etc...

    No momento que o Form for carregado, uma funcao pega os nomes cadastrados e cria TabPages no form...

    Alguém sabe como fazer isso? 

    segunda-feira, 29 de fevereiro de 2016 22:07

Respostas

  • public void LoadPages()
            {
                var db = new Model1();
    
                var q = db.TbltarefaCiclos.Select(s => new List<String>{s.Descricao});
    
                foreach (var myTabPage in q.ToList().Select(page => new TabPage(page.FirstOrDefault())))
                {
                    tabControl1.TabPages.Add(myTabPage);
                }
    
            }

    Boa sorte no projeto !

    Att,


    Antero Marques

    terça-feira, 1 de março de 2016 00:16

Todas as Respostas

  • public void LoadPages()
            {
                var db = new Model1();
    
                var q = db.TbltarefaCiclos.Select(s => new List<String>{s.Descricao});
    
                foreach (var myTabPage in q.ToList().Select(page => new TabPage(page.FirstOrDefault())))
                {
                    tabControl1.TabPages.Add(myTabPage);
                }
    
            }

    Boa sorte no projeto !

    Att,


    Antero Marques

    terça-feira, 1 de março de 2016 00:16
  • A resposta do Antero foi muito objetiva e simples, parabéns.

    Jalber, se me permitir te dar uma dica, te sugiro tentar fazer as interfaces em WPF (XAML), além de ser muito mais fácil, você consegue layouts mais ricos (só uma sugestão). Eu fiz essa migração e não me arrependo, consegui aprender WPF em umas 3 semanas...

    Pois, além das abas dinâmicas, você precisará de conteúdos dinâmicos para estas TabPages, correto? No Win Forms, a maneira que consegui fazer isso, foi criar os layouts à parte (em tab pages) e a medida que eu ia criando, eu fazia uma cópia deste layout e adicionada ao content da minha Tab Page dinâmica.

    Cara, isso é muito custoso.. pelo menos pra mim, além de ter este trabalho de adicionar o layout à tab page dinâmica, eu também tinha que pegar estas informações (correto?). Pra fazer isso, eu tinha que percorrer as tab pages e pegar os componentes dela (textbox, label, etc) e identificar, pelos nomes, o que era aquilo e setar o valor daquele componente à propriedade da minha classe que estava esperando aquela informação.

    Pode ter uma alternativa melhor... mas na epoca eu não consegui pensar em algo melhor.

    Em WPF, eu crio os layouts e faço Bindings nele. eu já deixo pré-definido que a informação do TextBox vai pra propriedade Clientes.Nome; por exemplo.

    Ai, no load da janela, eu só dou um

    tabControl.ItemsSource = this.Lista_de_clientes;

    Eu desenvolvo um sistema de suporte técnico e pra criar um tab control dinâmico, eu só precisei de uma linha de XAML como esta

    <TabControl x:Name="tcPreviewOS" Grid.Row="3" ItemsSource="{Binding Path=Cliente.Ocorrencias.SelectedItem.Atendimento, UpdateSourceTrigger=PropertyChanged}" ItemTemplate="{DynamicResource TemplTabItem}" ContentTemplate="{DynamicResource TemplPreviewOS}" Margin="10,0"/>

    Em ItemsSource, eu defino a lista de objetos (classes), em ItemTemplate, eu defino o layout visual que a TabPage assumirá e Content Template eu defino um layout pra "cabeça" (onde, na imagem que você postou, tem escrito "tabPage1", "tabPage2").

    Em WPF, todos componentes podem assumir qualquer layout. então é muito mais fácil, desburocratizado e mais legal :D

    Só quero contribuir com você, pois eu ja passei por isso, especificamente com as tab pages, e foi um porre cara, não quero que você tenha a mesma complicação que eu. Por isto elogiei a resposta do Antero entretanto te recomendei o WPF.

    terça-feira, 1 de março de 2016 12:23
  • Obg Antero... Me ajudou muito!
    terça-feira, 1 de março de 2016 16:23
  • Vinícius, você me deu uma dica estupenda cara! Sempre tive curiosidade no assunto, mas todos os tutoriais no Youtube que assisti não ajudaram muito. Vc tem algum link de  material que eu possa estudar? 

    Obrigadão mano!!!

    terça-feira, 1 de março de 2016 16:30
  • Blza mano, show.. você tem skype? se quiser a gente pode trocar ideia por lá.

    Eu vou reunir uns links e materiais que tenho aqui e te passo amanhã.. pode ser?

    terça-feira, 1 de março de 2016 20:47
  • Blz cara.... Tenho sim: jalber.romano. Se não conseguir, tente pesquisar por jalberromano@msn.com.

    Muito obrigado pela força..... :)

    terça-feira, 1 de março de 2016 22:51
  • Mano, se você tiver os links ai pra compartilhar agradeceria muito!

    amysterdamneres@outlook.com

    quinta-feira, 16 de junho de 2016 14:11