none
Formulário em Abas (TabControl) RRS feed

  • 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.

    segunda-feira, 26 de outubro de 2015 19:12

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
    sexta-feira, 30 de outubro de 2015 15:01

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
    segunda-feira, 26 de outubro de 2015 23:24
  • 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
    sexta-feira, 30 de outubro de 2015 15:01