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

Recuperar formulario de un HashTable

Estas en el tema de Recuperar formulario de un HashTable en el foro de .NET en Foros del Web. Buenas tardes, Estoy intentando crear solo una instancia de formulario de un formulario Hijo MDI. Para ello tengo el siguiente código: Código: Private Sub toClientes_Click(ByVal ...
  #1 (permalink)  
Antiguo 30/10/2005, 10:38
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 10 meses
Puntos: 7
Recuperar formulario de un HashTable

Buenas tardes,

Estoy intentando crear solo una instancia de formulario de un formulario Hijo MDI. Para ello tengo el siguiente código:

Código:
Private Sub toClientes_Click(ByVal ....) Handles toClientes.Click
        If ClaseGlobales.tablaFormularios.ContainsKey("Clientes") Then
            frmClientes = CType(ClaseGlobales.tablaFormularios("Clientes"), frmClientes)
            frmClientes.Empezar()
            frmClientes.Show()
        Else
            Cursor = Cursors.AppStarting
            frmClientes = New frmClientes
            frmClientes.MdiParent = Me
            ClaseGlobales.tablaFormularios.Add("Clientes", frmClientes)
            frmClientes.Empezar()
            frmClientes.Show()
            Cursor = Cursors.Default
        End If
    End Sub
Como ven la primera vez que creo la instancia del fomrulario, lo meto en una TablaHas y muestro el formulario, hasta ahi, todo bien. Pero cuando cierro este formulario, y vuelvo a intentar abrirlo, pasamos por el primer if, sin embargo, a la hora de hacer el frmCilentes.Show me sale el siguiente error:

Excepción no controlada del tipo 'System.ObjectDisposedException' en system.windows.forms.dll

Información adicional: No se puede obtener acceso al objeto denominado "frmClientes".


¿Alguien sabe por que me está fallando?
__________________
Charlie.
  #2 (permalink)  
Antiguo 30/10/2005, 12:44
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 3 meses
Puntos: 7
Aquí ya se habló del tema http://www.forosdelweb.com/f29/evitar-que-desde-boton-abra-varias-veces-mismo-form-337260/.

Para evitar el error que mencionas, aparte de la comprobación que haces (sobre la existencia de la referencia al formulario) debes comprobar con la propiedad IsDisposed que te indicará si el objeto está o no "marcado" para finalización...

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #3 (permalink)  
Antiguo 30/10/2005, 13:22
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 10 meses
Puntos: 7
Lo siento xknow, pero no entiendo donde está el problema.
__________________
Charlie.
  #4 (permalink)  
Antiguo 30/10/2005, 13:56
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 3 meses
Puntos: 7
, bah, mejor usa la documentación...
http://msdn.microsoft.com/library/sp...posedtopic.asp

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #5 (permalink)  
Antiguo 30/10/2005, 14:02
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 10 meses
Puntos: 7
Vale, entonces algo anda mal, por que mi frmClientes no tiene la propiedad IsDisposed.

¿Por qué puede ser?, ¿Tengo que poner en la calse del formulario, que este herede de alguna otra?

Gracias y saludos nuevamente.
__________________
Charlie.
  #6 (permalink)  
Antiguo 31/10/2005, 13:17
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 10 meses
Puntos: 7
Alguien puede ayudarme, por favor?

xknow ha comentado que he de comprobar si el formulario está marcado para la finalización. Pero, el formulario sé que no ha sido finalizado, más que nada por que si me deja ejecutarle otros métodos publicos previos al Show().

Y mi objeto no tiene la porpiedad IsDisposed. En fin, si alguien puede hecharme un cable, le estaría muy agradecido.

Saludos
__________________
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 16:46.