Tengo un formulario principal que es un formulario MDI. Este formulario MDI
tiene unos men�s. Cuando se clicka en alg�n men� se abre uno u otro
formulario. Lo que necesito es que si al clickar en un men�, si el
formulario que se tiene que abrir ya est� abierto, que no lo vuelva a abrir,
sino que lo active.
Utilizo el siguiente c�digo pero el BringToFront, ni se entera. �Alguna idea
de como activar el formulario hijo?
Gracias
Private Sub Mnu_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Mnu.Click
Dim FormularioHijo As New FrmMtoClientes
If FormularioAbierto("FrmMtoClientes") = True Then
FormularioHijo.BringToFront()
Else
FormularioHijo.MdiParent = Me
FormularioHijo.Show()
End If
End Sub
Function FormularioAbierto(ByVal nb_formulario As String) As Boolean
FormularioAbierto = False
Dim Formu As Form
For Each Formu In Application.OpenForms
If Formu.Name = nb_formulario Then
FormularioAbierto = True
End If
Next
End Function
En tu codigo haces: 'FormularioHijo AS New ...', con lo cual FormularioHijo
'siempre es un nuevo formulario' !!!
Aunque busques con la función FormularioAbierto() si ya existe, luego operas
con FormularoHijo, con lo cual estás creando un formulario cada vez que
haces click!!!
Existen múltiples soluciones, pero la mas 'parecida' a lo que tienes seria
algo que así:
Dim frmHijo as FrmMtoClientes ''' IMPORTANTE: Sin el New!!!
frmHijo = FormularioAbierto("FrmMtoClientes")
If frmHijo Is Nothing Then ' Sino hay ninguno abierto, lo creamos de
nuevo
frmHijo = New FrmMtoClientes
frmHijo.MdiParent = Me
frmHijo.Show
Else ' Si está abierto, lo pasamos p'alante
frmHijo.BringToFront
Endif
Y cambiar la funcion FormularioAbierto para que devuelva el Formulario (en
vez de True/False)
Function FormularioAbierto(ByVal nb_formulario As String) As Form
Dim Formu As Form
For Each Formu In Application.OpenForms
If Formu.Name = nb_formulario Then Return Formu
Next
End Function
NOTA: No he comprobado el código, pero si no funciona, la idea es lo que
vale ;-)
Espero que te sirva
Saludos
"Ira" <alban...@gmail.com> escribió en el mensaje
news:OExGuiH4...@TK2MSFTNGP06.phx.gbl...
> Hola,
>
> Tengo un formulario principal que es un formulario MDI. Este formulario
> MDI tiene unos menús. Cuando se clicka en algún menú se abre uno u otro
> formulario. Lo que necesito es que si al clickar en un menú, si el
> formulario que se tiene que abrir ya está abierto, que no lo vuelva a
> abrir, sino que lo active.
>
> Utilizo el siguiente código pero el BringToFront, ni se entera. ¿Alguna
Public Sub MostrarVentana(ByVal Formulario As Form, ByVal Mdi As Form)
Dim Frmllamado As Form
Formulario.Text = Formulario.Name
Dim Escargado As Boolean = False
For Each Frmllamado In Mdi.MdiChildren
If Frmllamado.Text = Formulario.Text Then
Escargado = True
Exit For
End If
Next
If Not Escargado Then
Formulario.MdiParent = Mdi
Formulario.StartPosition = FormStartPosition.CenterScreen
Formulario.Show()
ElseIf Escargado Then
Formulario.Focus()
End If
End Sub
para llamar es algo
MostrarVentana(frmTipoDocente, Me)
espero que te sirva
"L. Garcia" wrote:
> .
>
"L. Garcia" <liuxi...@redestb.es> escribió en el mensaje
news:u3iQlhJ4...@TK2MSFTNGP05.phx.gbl...
Private Sub Mnu_Click(ByVal sender As System.Object, ByVal e As
>>> System.EventArgs) Handles Mnu.Click
My.Forms.MiFormulario.Show
end codigo..
y ya estuvo...
como es un hijo, sino esta creado lo crea y si ya esta creado lo muestra...
saludos
"Ira" <alban...@gmail.com> escribió en el mensaje de
noticias:OP1wDcS4...@TK2MSFTNGP05.phx.gbl...