Problema para abrir formulario

23/11/2005 - 19:13 por Lucas | Informe spam
Tengo un problema a la hora de abrir un formulario. El código que suelo
encontrar en internet para este fin es el siguiente:

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

Dim formulario As New FormNuevo 'creo un objeto de la clase FormNuevo
formulario.Show() ' muestro el formulario haciendo uso del
método show

End sub

Para que al hacer clic en un determinado botón se abra el formulario. Sin
embargo, dado que el nuevo formulario no es modal, se puede volver al
formulario donde se encuentra el botón que permitió abrir el nuevo
formulario. Por lo que puedo abrir varios nuevos formularios con solo hacer
clic, es decir, cada vez que hago clic en el botón, abro un nuevo formulario,
uno tras otro, todos iguales.

Esto se debe a que cada vez que hago clic en el botón, creo un objeto de la
clase FormNuevo. He intentado declarar al nuevo formulario en las
declaraciones generales, pero cada vez que cierro el nuevo formulario e
intento volver a abrirlo me sale un error.

He logrado solucionar este problema haciendo uso del patrón Singleton para
que solo pueda crear una instancia de cada formulario que deseo abrir, pero
me parece que es mucha cosa para una tarea tan simple.

Espero que alguien pueda solucionar el problema que tengo. Gracias
 

Leer las respuestas

#1 Jorge Serrano [MVP VB]
23/11/2005 - 19:32 | Informe spam
Hola Lucas,

vamos a ver si el siguiente ejemplo te sirve;

Declara en el Form1 la variable:

Public MiForm As Form2


Además, escribe el siguiente código:

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


En el segundo formulario, declara la siguiente instrucción:

Public MiFormPadre As Form1


A continuación escribe este código:

Private Sub Form2_Closed(ByVal sender As Object, ByVal e As
System.EventArgs) Handles MyBase.Closed
MiFormPadre.MiForm = Nothing
End Sub



Espero que te sirva.


Un saludo.

Jorge Serrano Pérez
Microsoft MVP VB.NET
PortalVB.com
http://www.portalvb.com/
Weblog de Jorge Serrano
http://weblogs.golemproject.com/jorge/


"Lucas" wrote:

Tengo un problema a la hora de abrir un formulario. El código que suelo
encontrar en internet para este fin es el siguiente:

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

Dim formulario As New FormNuevo 'creo un objeto de la clase FormNuevo
formulario.Show() ' muestro el formulario haciendo uso del
método show

End sub

Para que al hacer clic en un determinado botón se abra el formulario. Sin
embargo, dado que el nuevo formulario no es modal, se puede volver al
formulario donde se encuentra el botón que permitió abrir el nuevo
formulario. Por lo que puedo abrir varios nuevos formularios con solo hacer
clic, es decir, cada vez que hago clic en el botón, abro un nuevo formulario,
uno tras otro, todos iguales.

Esto se debe a que cada vez que hago clic en el botón, creo un objeto de la
clase FormNuevo. He intentado declarar al nuevo formulario en las
declaraciones generales, pero cada vez que cierro el nuevo formulario e
intento volver a abrirlo me sale un error.

He logrado solucionar este problema haciendo uso del patrón Singleton para
que solo pueda crear una instancia de cada formulario que deseo abrir, pero
me parece que es mucha cosa para una tarea tan simple.

Espero que alguien pueda solucionar el problema que tengo. Gracias

Preguntas similares