Problema al mostrar un formulario por segunda vez

18/01/2005 - 01:03 por Public | Informe spam
Hola. Quiero mostrar un formulario desde otro. Tengo el Form1 que es el
principal y el Form2 que es el que quiero mostrar cuando de un botón del
Form1.

En el Form1 tengo este código:
Option Strict On
Public Class Form1
Inherits System.Windows.Forms.Form
Dim frm As Form2 = New Form2()
Codigo generado por el Diseñador de Windows Forms

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
frm.Show()
End Sub

Y en el Form2 tengo un botón donde he puesto solamente close()

Lo que no quiero es que me saque una ventana cada vez que de al botón del
Form1, solo quiero una sola ventana del Form2.

Ejecuto el programa y doy al botón del Form1. Me muestra el Form2. Cierro el
Form2. Vuelvo a dar al botón del Form1 y me da 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
"Form2".

He probado a poner en el Form2 en el evento closing esto:
Me.Hide()
e.Cancel = True
Pero no me parece la solución ocultar el Form2, ya que cuando quiera hacer
un programa de verdad, cosa que me esta pasando. El evento Load del Form2
solo se ejecuta la primera vez, no cada vez que se muestra el formulario.

Lo que necesito es descargar el Form2 y cargarlo cada vez que lo necesite.

Algo tan sencillo como en Visual Basic 6

Form2.show
y el el Form2; Unload Me

Gracias.
 

Leer las respuestas

#1 Jorge Serrano [MVP VB]
18/01/2005 - 09:03 | Informe spam
Hola,

puedes poner:

Dim frm As Form2

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
frm = New Form2
frm.Show()
End Sub


Un saludo,

Jorge Serrano Pérez
MVP VB.NET

"Public" wrote:

Hola. Quiero mostrar un formulario desde otro. Tengo el Form1 que es el
principal y el Form2 que es el que quiero mostrar cuando de un botón del
Form1.

En el Form1 tengo este código:
Option Strict On
Public Class Form1
Inherits System.Windows.Forms.Form
Dim frm As Form2 = New Form2()
Codigo generado por el Diseñador de Windows Forms

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
frm.Show()
End Sub

Y en el Form2 tengo un botón donde he puesto solamente close()

Lo que no quiero es que me saque una ventana cada vez que de al botón del
Form1, solo quiero una sola ventana del Form2.

Ejecuto el programa y doy al botón del Form1. Me muestra el Form2. Cierro el
Form2. Vuelvo a dar al botón del Form1 y me da 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
"Form2".

He probado a poner en el Form2 en el evento closing esto:
Me.Hide()
e.Cancel = True
Pero no me parece la solución ocultar el Form2, ya que cuando quiera hacer
un programa de verdad, cosa que me esta pasando. El evento Load del Form2
solo se ejecuta la primera vez, no cada vez que se muestra el formulario.

Lo que necesito es descargar el Form2 y cargarlo cada vez que lo necesite.

Algo tan sencillo como en Visual Basic 6

Form2.show
y el el Form2; Unload Me

Gracias.




Preguntas similares