TABCONTROL

FELIPEDRONI 11/04/2012 17:18:19
#399620
Ola galera

Já procurei em muitos lugares, mas não achei oque preciso
o negócio é o seguinte, tenho um tabcontrol e dentro deste tabcontrol
obviamente tenho tabpages e dentro destas tabpages tenho forms, é ai
que começa meu problema(de noob), quando eu abro uma aba de cada vez
funciona tudo bem, mas quando deixo uma aberta e abro a segunda ela abre
o form na aba do form anterior...
Fico muito confuso né!!!
Para melhor entender, disponibilizei o projeto....
para quem for fazer o teste, no menu, na aba cliente no botão consulta abre um.
na aba produtos no botão consulta abre mais um.

o código que uso para abrir:

Public Sub abreform2()
If testa_aberto_frm2 = True Then
Dim f2 As Form2 = New Form2
f2.Focus()
Else

Dim f2 As Form2 = New Form2

f2.TopLevel = False

Form1.TabControl1.TabPages.Add(f2.Text)

Form1.TabControl1.SelectedTab.Controls.Add(f2)
f2.Show()
testa_aberto_frm2 = True
End If
End Sub

Public Sub abreform3()
If teste_aberto_frm3 = True Then
Dim f3 As Form3 = New Form3
f3.Focus()

Else

Dim f3 As Form3 = New Form3

f3.TopLevel = False

Form1.TabControl1.TabPages.Add(f3.Text)

Form1.TabControl1.SelectedTab.Controls.Add(f3)
f3.Show()
teste_aberto_frm3 = True
End If
End Sub

para fechar:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim f3 As Form3 = New Form3
f3.Close()
Form1.TabControl1.TabPages.Remove(Form1.TabControl1.SelectedTab)
teste_aberto_frm3 = False
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim f2 As Form2 = New Form2
f2.Close()
Form1.TabControl1.TabPages.Remove(Form1.TabControl1.SelectedTab)
testa_aberto_frm2 = False
End Sub

Desde já agradeço


FELIPEDRONI 12/04/2012 15:44:06
#399715
Calma gente, um post de cada vez.....

Mas para NOSSA ALEGRIA, resolvi o problema, o erro estava nesta linha:
Form1.TabControl1.SelectedTab.Controls.Add(f2)

e tem que ser assim:

Form1.TabControl1.TabPages(Form1.TabControl1.TabIndex).Controls.Add(f2)

ou seja minha sub para add uma tab com form dentro fica assim:

Public Sub abreform2()
If testa_aberto_frm2 = True Then

f2.Focus()
Else

f2.TopLevel = False
Form1.TabControl1.TabIndex = Form1.TabControl1.TabCount
Form1.TabControl1.TabPages.Add(f2.Text)
Form1.TabControl1.TabPages(Form1.TabControl1.TabIndex).Controls.Add(f2)
[ô]Form1.TabControl1.SelectedTab.Controls.Add(f2)
f2.Show()
testa_aberto_frm2 = True
MsgBox(Form1.TabControl1.TabIndex)
End If
End Sub

Vlw gente e até mais...
Tópico encerrado , respostas não são mais permitidas