Estaba creando un ejemplo en el cual, desde un formulario principal se le pasa un dato a otro formulario.
Este formulario que recibe el dato se va a almacenar en un array. Voy creando varias instancias del mismo.
Tengo una listbox desde la que selecciono el formulario que quiero abrir.
Uno de los problemas que me encontré fue. Cerraba el formulario una vez se le pasaba el dato para
mostrarse en este. El array de formularios almacenaba un objeto nulo y luego no se mostraba.
Al final tuve que ocultarlo en vez de cerrarlo. ( Deja de existir ).
FMain
Private formularios As New Form[]
Private numform As Integer
Public Sub Form_Open()
End
Public Sub btnOpenForm_Click()
Dim unformulario As FormUsuario
If Not IsNull(TextBox1.Text) Then
unformulario = New FormUsuario
unformulario.nombre = TextBox1.Text
formularios.Add(unformulario)
unformulario.Show()
numform += 1
ListBox1.Add("Formulario " & Str(numform))
Else
Message.Error("Has olvidado entrar un nombre")
Endif
End
Public Sub ListBox1_Click()
Dim unformulario As FormUsuario
unformulario = formularios[ListBox1.Index]
unformulario.Show()
End
Private numform As Integer
Public Sub Form_Open()
End
Public Sub btnOpenForm_Click()
Dim unformulario As FormUsuario
If Not IsNull(TextBox1.Text) Then
unformulario = New FormUsuario
unformulario.nombre = TextBox1.Text
formularios.Add(unformulario)
unformulario.Show()
numform += 1
ListBox1.Add("Formulario " & Str(numform))
Else
Message.Error("Has olvidado entrar un nombre")
Endif
End
Public Sub ListBox1_Click()
Dim unformulario As FormUsuario
unformulario = formularios[ListBox1.Index]
unformulario.Show()
End
FormUsuario
Private hnombre As String
Property nombre As String
Public Sub Form_Open()
Label1.Text = Me.nombre
End
Private Function nombre_Read() As String
Return hnombre
End
Private Sub nombre_Write(Value As String)
hnombre = Value
End
Public Sub btnCerrar_Click()
'El formulario debe ser ocultado, no cerrado.
'Si se cierra deja de existir y el array de formularios contendrá un objeto nulo
Me.Hide
'Me.Close
End
Property nombre As String
Public Sub Form_Open()
Label1.Text = Me.nombre
End
Private Function nombre_Read() As String
Return hnombre
End
Private Sub nombre_Write(Value As String)
hnombre = Value
End
Public Sub btnCerrar_Click()
'El formulario debe ser ocultado, no cerrado.
'Si se cierra deja de existir y el array de formularios contendrá un objeto nulo
Me.Hide
'Me.Close
End
¿ En que situaciones soléis ocultar el formulario ?. (¿ En que lo habéis aplicado normalmente ?).
Desde luego un formulario que tenga mucha información.
O a lo mejor no soléis usar esto y preferís crear el formulario y pasarle los datos concretos.
Almacenar formularios me parece un poco raro.
Saludos