Foros del Web » Programación para mayores de 30 ;) » .NET »

cerrar form en visual.net abierto desde mdi

Estas en el tema de cerrar form en visual.net abierto desde mdi en el foro de .NET en Foros del Web. Buenas, estoy generando una aplicación que carga inicialmente un form mdi(Principal), al cargar se abre un form(clientes) con esta instrucción: Dim Fclientes as new clientes ...
  #1 (permalink)  
Antiguo 20/07/2005, 07:47
 
Fecha de Ingreso: julio-2005
Ubicación: Valencia
Mensajes: 16
Antigüedad: 18 años, 9 meses
Puntos: 1
cerrar form en visual.net abierto desde mdi

Buenas, estoy generando una aplicación que carga inicialmente un form mdi(Principal), al cargar se abre un form(clientes) con esta instrucción: Dim Fclientes as new clientes
. esto me lo hace bien, el problema es que no me lo reconoce para cerrarlo ni para hide, asias de antemano....
  #2 (permalink)  
Antiguo 20/07/2005, 07:54
 
Fecha de Ingreso: enero-2005
Ubicación: Benifaió (Valencia)
Mensajes: 319
Antigüedad: 19 años, 3 meses
Puntos: 0
Comprueba que el nombre del formulario "clientes" sea correcto, ya que Fcliente.Hide o FClientes.close() deberia de funcionar bien.
  #3 (permalink)  
Antiguo 20/07/2005, 12:51
 
Fecha de Ingreso: julio-2005
Ubicación: Salamanca
Mensajes: 54
Antigüedad: 18 años, 9 meses
Puntos: 0
una de las posibilidades es que el formulario mdi debe ser de tipo contenedor para que asi albergue a los otros el frm debes declaralo como :
Fcliente.mdiparent = me
Fcliente.show()
y despues de estas declaraciones puedes cerrar de manera correcta los formularios que vendrian a ser hijos del mdi
ojala te funcione
  #4 (permalink)  
Antiguo 20/07/2005, 13:54
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 10 meses
Puntos: 7
Mmm, creo k no es asi la kosa ....

Debes crear una clase contenedora, y cada vez que hagas una instancia de un formulario, meterlo en esta clase, con un unico identificador.

Cuando quieras cerrar ese formulario, usa esta clase para conseguir la instancia creada y cerrarlo.

Si haces en un menu del MDI:
Dim frmClientes as new FrmClientes
frmClientes.MdiParent = me
frmClientes.Show()

Cada vez que des a ese botón te creará uan isntancia . . .

Lo que debes hacer es controlar, para k solo exista una instancia de ese formulario, y asi poder controlarla y trabajar con ella.
__________________
Charlie.
  #5 (permalink)  
Antiguo 20/07/2005, 14:07
 
Fecha de Ingreso: julio-2005
Ubicación: Córdoba
Mensajes: 254
Antigüedad: 18 años, 9 meses
Puntos: 0
si lo que quieres es cerrar el formulario ponle un boton con la instruccion me.close()
y listo no es mas que eso...

ahora no se si es posible que desde el mdicontainer puedas cerrar algun form abierto...
creo que puedes hacerlo por medio de del system.windows.forms. y algun enriedo por ahi...
  #6 (permalink)  
Antiguo 20/07/2005, 19:50
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 10 meses
Puntos: 7
Para cerrar un formulario desde otro formulario hay dos maneras:

Una, creando una variable publica, en el formulario en el k abres el hijo:

Dim frmHijo as FrmHijo
Dim objFrmHijo as new FrmHijo
frmHijo = objFrmHijo

objFrmHijo.show
frmHijo.Close()


Y otra forma, que es lo más ídoneo es comprobando si existe una instancia de ese formulario:

Dim objFrmHijo as new FrmHijo
objManejador.Agrega(objFrmHijo, "objFrmHijo")

if objManejador.Existe("objFrmHijo") then
objManejador.Cierra("objFrmHijo")
End If


No sé si hay mas formas o si no son las más optimas, pero son las que yo he usando en los últimos proyectos en los que hemos trabajado.

Saludos y ya me comentarán.
__________________
Charlie.
  #7 (permalink)  
Antiguo 21/07/2005, 04:58
 
Fecha de Ingreso: julio-2005
Ubicación: Valencia
Mensajes: 16
Antigüedad: 18 años, 9 meses
Puntos: 1
gracias a todos por la ayuda que me estais dando, la duda que tengo realmente es que si yo creo un form con "Dim frmHijo As New clientes" como lo cierro desde el mdicontainer, lo logico seria frmHijo.Close(), o en su defecto por logica Me.frmHijo.Close(). eso es realmente lo que no comprendo y no consigo hacer, Pd: tengo claro que con un close desde dentro de este puedo cerrarlo pero lo que quiero conseguir es cerrarlo desde el MDI. asias a tos...
  #8 (permalink)  
Antiguo 21/07/2005, 05:15
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Eso es porque declaras el frmHijo en un metodo, declaro como variable global:

Dim frmHijo as clientes

private sub abrir()
if frmHijo is nothing
frmHijo.close()
end if
end sub

private sub cerrar()
if not frmHijo is nothing
frmHijo.close()
end if
end sub

así de facil
  #9 (permalink)  
Antiguo 21/07/2005, 06:15
 
Fecha de Ingreso: julio-2005
Ubicación: Valencia
Mensajes: 16
Antigüedad: 18 años, 9 meses
Puntos: 1
bueno, despues de darle las vueltas ya lo he solucionado, os lo pongo aqui para que no os pase a ninguno:

el codigo que carga el form:

Dim frmHijo As New frmPadre
frmHijo.MdiParent = Me
frmHijo.Show()

el que lo cierra desde el mdi principal:

Dim frmHijo As frmPadre = Me.ActiveMdiChild
If Not frmHijo Is Nothing Then
frmHijo.Close()
End If

y ya esta...
gracias a todos de todas formas si no esta claro me lo comentais que yo he aprendido bastante sobre esto, je je je ej je
  #10 (permalink)  
Antiguo 21/07/2005, 11:30
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 10 meses
Puntos: 7
Toma tio, sigue asi, sin pelearte con el código . . . .


Código:
Public Class Form1
    Inherits System.Windows.Forms.Form

#CODIGO GENERADO

    Private objFrmClientes As frmClientes

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If objFrmClientes Is Nothing Then
            objFrmClientes = New frmClientes
            objFrmClientes.MdiParent = Me
            objFrmClientes.Show()
        End If
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        If Not objFrmClientes Is Nothing Then
            objFrmClientes.Close()
            objFrmClientes = Nothing
        End If
    End Sub

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.WindowState = FormWindowState.Maximized
    End Sub
End Class
__________________
Charlie.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:51.