Visual Basic.NET - El

   
Vista:

El

Publicado por Andrux (6 intervenciones) el 09/01/2009 06:01:36
Hola, estoy teniendo problemas con tabpages y quisiera saber si alguien me puede ayudar a encontrar la luz...

Tengo una aplicacion que abre sus formularios en tabpages, dentro de un tabcontrol, el caso es que cuando abro un formulario que ya tengo abierto en otro tabpage, quiero (y no tengo alternativa, hasta donde yo se) que no se abra otro tabpage con el formulario dentro, sino que se seleccione el tabpage que ya contiene dicho formulario sin abrir otro tabpage con el formulario duplicado (de hecho me gustaria poder controlar el que se abriera determinado numero de formularios duplicados en tabpages diferentes, pero al parecer no tengo opcion, porque se abre otro tabpage con el nombre del nuevo formulario y el otro tabpage del mismo nombre se queda vacio).

No tuve problemas para saber como se selecciona un tabpage especifico, para eso tenemos el Tabcontrol1.SelectTab(tabpage) que hace eso precisamente, pero el problema que tengo es que este me acepta 3 tipos diferentes de argumentos:

1. integer
2. tabpage
3. string

La forma en que abro un nuevo formulario es con una sub que toma como argumento un formulario, asi que lo que puedo obtener de esa sub es el titulo del formulario, que como tipo string que es, debe funcionar con el SelectTab por ser del tipo del tercer argumento (bendito OOP), pero por alguna razon no me toma el tercer argumento y me sale un error de NullException, y segun los detalles de la excepcion, esta esperando un argumento tipo tabpage...

Podria buscar la forma de "rodear" el problema, pero como me ha pasado en un par de ocasiones algo similar, con los tipos de argumentos, la verdad mejor quisiera saber el por que me pasa y logicamente el como lo puedo arreglar.

Aqui esta la sub que uso para abrir los formularios por si alguien necesita visuales:

Private Sub MostrarFormulario(ByVal Nuevo As Form)
'Mostrar el formulario
If ExisteFormulario(Nuevo) Then
TabControl1.SelectTab(Nuevo.Text)
Else
FormularioProp(Nuevo)
Me.Text = Application.ProductName

Nuevo.TopLevel = False
Nuevo.FormBorderStyle = Windows.Forms.FormBorderStyle.None
Nuevo.WindowState = FormWindowState.Maximized
Nuevo.Dock = DockStyle.Fill
Nuevo.Visible = True
AddHandler Nuevo.FormClosed, AddressOf Nuevo_FormClosed

Dim NewTab As New TabPage
NewTab.Text = Nuevo.Text

Nuevo.Tag = NewTab
TabControl1.TabPages.Add(NewTab)
NewTab.Controls.Add(Nuevo)
TabControl1.SelectTab(TabControl1.TabPages.Count - 1)
End If
End Sub

Alguien tiene alguna idea?

Gracias de antemano!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder