Usuário com melhor resposta
Formulário em Abas (TabControl)

Pergunta
-
Estou implementando um form na seguinte situação:
Form principal contendo um TabControl, preciso chamar os outros forms para serem abertos dentro desse tabcontrol em formato de abas, estilo firefox, chrome, internet explorer.
Até consigo, utilizado o código:
Dim AcessouCliente As Boolean = False Private Sub mnuClientes_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuClientes.Click Dim contatos As New FormClientes Dim tab As New TabPage If AcessouCliente = False Then contatos.TopLevel = False tab.Text = contatos.Text tab.Controls.Add(contatos) tbcPrincipal.TabPages.Add(tab) contatos.Show() tbcPrincipal.SelectedIndex = tab.TabIndex Else tbcPrincipal.SelectedIndex = tab.TabIndex contatos.Focus() End If AcessouCliente = True End Sub
O que pretendo fazer é chamar o form. Caso o mesmo ainda não tenha sindo aberto, abre, caso contrário apenas exibe o mesmo, dentro da aba que já foi criada, sem a necessidade de criar uma nova aba, jogando o foco para a mesma.
O código acima faz isso, porém quando quando a aba ja esta criada, sempre volta para a primeira aba.
Agradeço a todos.
Respostas
-
Pessoal, probelea resolvido. Com algumas adpatações no código, funcionou.
Segue o código:
Private Sub mnuContatos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuContatos.Click Dim Janela As New FormContatos Dim tab As New TabPage Dim Encontrou As Boolean = False For Each JanelaAberta As Form In Application.OpenForms If TypeOf JanelaAberta Is FormContatos Then JanelaAberta.Focus() Encontrou = True End If Next If Not Encontrou Then Janela.TopLevel = False tab.Text = Janela.Text tab.Name = Janela.Text tab.Controls.Add(Janela) tbcPrincipal.TabPages.Add(tab) Janela.Show() tbcPrincipal.SelectedTab = tab Else For Each page As TabPage In tbcPrincipal.TabPages If page.Name = Janela.Text Then tbcPrincipal.SelectedTab = page Janela.Focus() End If Next page End If End Sub
Falow? Obrigado a todos!!!- Marcado como Resposta AgnaldoSantos sexta-feira, 30 de outubro de 2015 16:05
Todas as Respostas
-
Você pode usar o controle MdiTabStrip junto com este tutorial: Desenvolvendo uma aplicação Windows MDI.
- Sugerido como Resposta JAlvez42 terça-feira, 27 de outubro de 2015 00:59
-
Pessoal, probelea resolvido. Com algumas adpatações no código, funcionou.
Segue o código:
Private Sub mnuContatos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuContatos.Click Dim Janela As New FormContatos Dim tab As New TabPage Dim Encontrou As Boolean = False For Each JanelaAberta As Form In Application.OpenForms If TypeOf JanelaAberta Is FormContatos Then JanelaAberta.Focus() Encontrou = True End If Next If Not Encontrou Then Janela.TopLevel = False tab.Text = Janela.Text tab.Name = Janela.Text tab.Controls.Add(Janela) tbcPrincipal.TabPages.Add(tab) Janela.Show() tbcPrincipal.SelectedTab = tab Else For Each page As TabPage In tbcPrincipal.TabPages If page.Name = Janela.Text Then tbcPrincipal.SelectedTab = page Janela.Focus() End If Next page End If End Sub
Falow? Obrigado a todos!!!- Marcado como Resposta AgnaldoSantos sexta-feira, 30 de outubro de 2015 16:05