Usuário com melhor resposta
Como Criar TABPAGES em um TABCONTROL (Dinâmicas) com os nomes armazenados em uma tabela de um banco SQL Server

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?
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
- Sugerido como Resposta Vinicius Lima - Programmer terça-feira, 1 de março de 2016 12:02
- Marcado como Resposta JR-Master terça-feira, 1 de março de 2016 16:23
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
- Sugerido como Resposta Vinicius Lima - Programmer terça-feira, 1 de março de 2016 12:02
- Marcado como Resposta JR-Master terça-feira, 1 de março de 2016 16:23
-
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.
-
-
-
-
-