elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Problema ocultando Form1 y liberando sus controles
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema ocultando Form1 y liberando sus controles  (Leído 2,176 veces)
okik


Desconectado Desconectado

Mensajes: 462


Ver Perfil
Problema ocultando Form1 y liberando sus controles
« en: 22 Septiembre 2016, 12:06 pm »

Hace tiempo que no entro aquí XD

Pero este es un problema difícil de buscar. No se ni que poner en google.

Es muy simple, cargo un formulario principal A, con X controles. Luego oculto A y libero sus controles al cargar el formulario B. Al cerrar B, se liberan los controles y eventos de B y se vuelve a mostrar el formulario A y recarga sus controles y eventos. Pero tras esto el formulario A no se cierra. Lo podría solucionar simplemente usando End. Pero no es elegante, está claro que no aplico bien el método.

Formulario 1
Código
  1. Public NotInheritable Class frmMain
  2.    Inherits Form
  3.    Friend MyButton1 As Button
  4.  
  5.    Public Sub New()
  6.  
  7.        ' Llamada necesaria para el diseñador.
  8.        MyClass.InitializeComponent()
  9.        Me.MyButton1 = New Button With {
  10.            .Text = "Show Form2",
  11.            .Location = New Point(10, 10)
  12.        }
  13.        ' Agregue cualquier inicialización después de la llamada a InitializeComponent().
  14.        AddHandler MyButton1.Click, AddressOf MyButton1_Click
  15.    End Sub
  16.  
  17.  
  18.    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  19.        Me.Controls.Add(MyButton1)
  20.        Me.Text = "frmMain"
  21.    End Sub
  22.    Private Sub MyButton1_Click(sender As Object, e As EventArgs)
  23.        DisposeControls()
  24.        Me.Hide()
  25.        frmDialog.Show()
  26.    End Sub
  27.  
  28.    Sub DisposeControls()
  29.        Me.MyButton1.Dispose()
  30.        RemoveHandler MyButton1.Click, AddressOf MyButton1_Click
  31.    End Sub
  32.  
  33. End Class
  34.  


Formulario 2
Código
  1. Public NotInheritable Class frmDialog
  2.    Inherits Form
  3.    Friend MyButton2 As Button
  4.    Friend fmain As New frmMain
  5.    Public Sub New()
  6.        ' Llamada necesaria para el diseñador.
  7.        MyClass.InitializeComponent()
  8.        MyButton2 = New Button With
  9.        {
  10.            .Text = "Show Form1",
  11.            .Location = New Point(10, 10)
  12.        }
  13.        ' Agregue cualquier inicialización después de la llamada a InitializeComponent().
  14.        AddHandler MyButton2.Click, AddressOf MyButton2_Click
  15.    End Sub
  16.  
  17.    Private Sub frmDialog_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
  18.        fmain.Show()
  19.        ' fmain.Visible=tue
  20.  
  21.    End Sub
  22.    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  23.        Me.Controls.Add(MyButton2)
  24.        Me.Text = "frmDialog"
  25.    End Sub
  26.    Private Sub MyButton2_Click(sender As Object, e As EventArgs)
  27.        DisposeControls()
  28.        Me.Close()
  29.    End Sub
  30.    Sub DisposeControls()
  31.  
  32.        RemoveHandler MyButton2.Click, AddressOf MyButton2_Click
  33.        Me.MyButton2.Dispose()
  34.    End Sub
  35. End Class

He probado de todo.



gracias por la ayuda



Si no libero los controles y eventos creados en el formulario A, entonces va bien. Pero deberían poderse liberar.


Código
  1. Public NotInheritable Class frmMain
  2.    Inherits Form
  3.    Friend MyButton1 As Button
  4.  
  5.    Public Sub New()
  6.  
  7.        ' Llamada necesaria para el diseñador.
  8.        MyClass.InitializeComponent()
  9.        Me.MyButton1 = New Button With {
  10.            .Text = "Show Form2",
  11.            .Location = New Point(10, 10)
  12.        }
  13.        ' Agregue cualquier inicialización después de la llamada a InitializeComponent().
  14.        AddHandler MyButton1.Click, AddressOf MyButton1_Click
  15.    End Sub
  16.  
  17.  
  18.    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  19.        Me.Controls.Add(MyButton1)
  20.        Me.Text = "frmMain"
  21.    End Sub
  22.    Private Sub MyButton1_Click(sender As Object, e As EventArgs)
  23.        DisposeControls()
  24.        Me.Hide()
  25.        frmDialog.Show()
  26.    End Sub
  27.  
  28.    Sub DisposeControls()
  29.        Me.MyButton1.Dispose()
  30.        RemoveHandler MyButton1.Click, AddressOf MyButton1_Click
  31.    End Sub
  32.  
  33. End Class


Código
  1. Public NotInheritable Class frmDialog
  2.    Inherits Form
  3.    Friend MyButton2 As Button
  4.    Public Sub New()
  5.        ' Llamada necesaria para el diseñador.
  6.        MyClass.InitializeComponent()
  7.        MyButton2 = New Button With
  8.        {
  9.            .Text = "Show Form1",
  10.            .Location = New Point(10, 10)
  11.        }
  12.        ' Agregue cualquier inicialización después de la llamada a InitializeComponent().
  13.        AddHandler MyButton2.Click, AddressOf MyButton2_Click
  14.    End Sub
  15.  
  16.    Private Sub frmDialog_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
  17.        '  fmain.Show()
  18.        frmMain.Show()
  19.  
  20.    End Sub
  21.    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  22.        Me.Controls.Add(MyButton2)
  23.        Me.Text = "frmDialog"
  24.    End Sub
  25.    Private Sub MyButton2_Click(sender As Object, e As EventArgs)
  26.        'DisposeControls()
  27.        Me.Close()
  28.    End Sub
  29.    Sub DisposeControls()
  30.  
  31.        RemoveHandler MyButton2.Click, AddressOf MyButton2_Click
  32.        Me.MyButton2.Dispose()
  33.    End Sub
  34. End Class


« Última modificación: 22 Septiembre 2016, 12:12 pm por okik » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: Problema ocultando Form1 y liberando sus controles
« Respuesta #1 en: 22 Septiembre 2016, 13:43 pm »

Tienes que modificar toda la lógica del problema que estés intentando resolver...

1. Una aplicación WindowsForms no puede coexistir sin un Form principal, puesto que el Form contiene el método del punto de entrada (Entry point) de la aplicación. Si liberas/cierras el Form principal, es exactamente lo mismo que finalizar la aplicación. En resumen, NO debes liberar el Form principal (a menos que quieras terminar la ejecución de la app).

2. En el Form-diálogo tienes declarado esto:
Citar
Código:
Friend fmain As New frmMain
...lo que consigues haciendo eso es crear una nueva instancia de frmMain, distinta, duplicada, e innecesariamente puesto que no necesitas crear ni 1 ni 2 ni ninguna instancia adicional del Form principal de tu aplicación, ya la tienes instanciada, úsala. No se si he explicado bien esta parte, ¿entiendes lo que intento decirte?.

3. No necesitas asegurarte de liberar ningún control ni de eliminar ninguna asociación de eventos, todo eso ya lo hace .NET Framework automáticamente al llamar al método Form.Dispose(), se encarga de liberar todos los controles de la colección de controles del Form, entre otros recursos administrados y no administrados...

4. La manera de implementar un método de liberación de recursos (Dispose) no es añadiendo un método cualquiera al que llamaremos "DisposeControls" al tún tún y liberar allí los objetos, no, se hace implementando la interfáz IDIsposable:

Código
  1. Class Class1 : Implements IDisposable
  2.  
  3. #Region " IDisposable Implementation "
  4.  
  5.    Private isDisposed As Boolean
  6.  
  7.    Public Sub Dispose() Implements IDisposable.Dispose
  8.        Me.Dispose(isDisposing:=True)
  9.        GC.SuppressFinalize(obj:=Me)
  10.    End Sub
  11.  
  12.    Protected Overridable Sub Dispose(ByVal isDisposing As Boolean)
  13.        If (Not Me.isDisposed) AndAlso (isDisposing) Then
  14.            ' Free managed resources here...
  15.        End If
  16.  
  17.        ' Free unmanaged resources here...
  18.        Me.isDisposed = True
  19.    End Sub
  20.  
  21. #End Region
  22.  
  23. End Class

El type Form logicamente ya implementa dicha interfaz, así que solamente debes hacer una suplantación:

Código
  1. Class Form1 : Inherits Form
  2.  
  3.    Protected Overrides Sub Dispose(ByVal isDisposing As Boolean)
  4.        ' Free additional managed and unmanaged resources here...
  5.        MyBase.Dispose(disposing:=True)
  6.    End Sub
  7.  
  8. End Class



No se muy bien lo que pretendes hacer, ya que en realidad ese diálogo dista bastante de ser un diálogo puesto que no le das el uso que se le daría a un diálogo, de todas formas he escrito este ejemplo de aquí abajo que creo te podrá servir.

Lo que hace este ejemplo es mostrar un diálogo a través de un botón del Form principal, y volver a mostrar el Form principal despues de devolver el resultado del diálogo. Eso es lo que creo haber entendido que quieres hacer... y yo solo te muestro una manera apropiada de hacerlo.

Form Principal:
Código
  1. Public NotInheritable Class FormMain : Inherits Form
  2.  
  3.    Friend WithEvents ButtonShowDlg As Button
  4.  
  5.    Public Sub New()
  6.        ' MyClass.InitializeComponent()
  7.  
  8.        Me.Text = "Main Window"
  9.  
  10.        Me.ButtonShowDlg = New Button With
  11.            {
  12.              .Text = "Show Dialog Window...",
  13.              .Location = New Point(10, 10)
  14.            }
  15.    End Sub
  16.  
  17.    Private Sub FormMain_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
  18.        Me.Controls.Add(Me.ButtonShowDlg)
  19.    End Sub
  20.  
  21.    Private Sub ButtonShowDlg_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ButtonShowDlg.Click
  22.        Me.Hide()
  23.  
  24.        Dim dlgPos As Point
  25.        Dim dlgResult As DialogResult
  26.  
  27.        Using dlg As FormDlg = My.MyProject.Forms.FormDlg
  28.            dlgResult = dlg.ShowDialog(Me)
  29.            dlgPos = dlg.Location
  30.            Debug.WriteLine(dlgResult.ToString())
  31.        End Using
  32.  
  33.        Me.Location = dlgPos
  34.        Me.Show()
  35.    End Sub
  36.  
  37. End Class

Diálogo:
Código
  1. Public NotInheritable Class FormDlg : Inherits Form
  2.  
  3.    Friend WithEvents ButtonClose As Button
  4.  
  5.    Public Sub New()
  6.        ' MyClass.InitializeComponent()
  7.  
  8.        With Me
  9.            .Text = "Dialog Window"
  10.            .FormBorderStyle = FormBorderStyle.FixedDialog
  11.            .Owner = My.MyProject.Forms.FormMain
  12.            .StartPosition = FormStartPosition.CenterParent
  13.        End With
  14.  
  15.        Me.ButtonClose = New Button With
  16.            {
  17.              .Text = "Show Main Window...",
  18.              .Location = New Point(10, 10)
  19.            }
  20.  
  21.    End Sub
  22.  
  23.    Private Sub FormDlg_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
  24.        Me.Controls.Add(Me.ButtonClose)
  25.    End Sub
  26.  
  27.    Private Sub FormDlg_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs) Handles Me.FormClosing
  28.        If (e.CloseReason = CloseReason.ApplicationExitCall) Then
  29.            Me.DialogResult = DialogResult.Cancel
  30.        End If
  31.    End Sub
  32.  
  33.    Private Sub ButtonClose_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ButtonClose.Click
  34.        Me.DialogResult = DialogResult.OK
  35.        Me.Close()
  36.    End Sub
  37.  
  38. End Class

Saludos!


« Última modificación: 22 Septiembre 2016, 14:15 pm por Eleкtro » En línea



okik


Desconectado Desconectado

Mensajes: 462


Ver Perfil
Re: Problema ocultando Form1 y liberando sus controles
« Respuesta #2 en: 22 Septiembre 2016, 16:41 pm »

Realmente no quería hacer un formulario Dialog, lo que pasa es que lo puse así para diferenciar el principal del que no lo es y al otro le puse dialog.


Para explicar voy a cambiar: tengo dos formularios FormA (principal) y FormB (secundario)

Lo que quiero es iniciar el segundo formulario y  FormA ocultarlo mediante 'HIDE". Pero al ocultar el principal realmente sigue en memoria y para liberar memoria quería eliminar todos los eventos y controles del FormA , al mostrar el FormB

Cuando cierro FormB todo se libera así que aquí no tengo que usar dispose ni nada, no se porqué lo puse ahí.

Pero cuando vuelvo a mostrar el formulario FormA usando Visible = True, como eliminé todos los controles, ya no aparecen. Así que uso Show.   Así que uso:

Código
  1.  
  2. Dim frmMain As New FormA
  3.        frmMain.Show()
  4.  

(hay varias maneras, lo se)

Y todos los controles se carga de nuevo, PERO , cuando cierro FormA no se cierra.

Esta es la cosa.


DEMOSTRACIÓN:

FORMA
Código
  1. Public NotInheritable Class FormA : Inherits Form
  2.  
  3.    Friend ButtonShowFormB As Button
  4.  
  5.    Public Sub New()
  6.        MyClass.InitializeComponent()
  7.        Me.Text = "FormA"
  8.        Me.ButtonShowFormB = New Button With
  9.            {
  10.              .Text = "Show FormB",
  11.              .Location = New Point(10, 10)
  12.            }
  13.        AddHandler Me.ButtonShowFormB.Click, AddressOf ButtonShowFormB_Click
  14.    End Sub
  15.  
  16.    Private Sub FormMain_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
  17.        Me.Controls.Add(Me.ButtonShowFormB)
  18.    End Sub
  19.  
  20.    Private Sub ButtonShowFormB_Click(ByVal sender As Object, ByVal e As EventArgs)
  21.        'Libera los controles
  22.        ButtonShowFormB.Dispose()
  23.        RemoveHandler Me.ButtonShowFormB.Click, AddressOf ButtonShowFormB_Click
  24.  
  25.        'Oculta el form
  26.        Me.Hide()
  27.  
  28.        'Muestra el Form2
  29.        FormB.Show()
  30.    End Sub
  31.  
  32. End Class


FORMB
Código
  1. Public NotInheritable Class FormB : Inherits Form
  2.  
  3.    Friend WithEvents ButtonShowFormA As Button
  4.  
  5.    Public Sub New()
  6.  
  7.        MyClass.InitializeComponent()
  8.  
  9.        With Me
  10.            .Text = "FormFB"
  11.            .FormBorderStyle = FormBorderStyle.FixedDialog
  12.            .Owner = My.MyProject.Forms.FormA
  13.            .StartPosition = FormStartPosition.CenterParent
  14.        End With
  15.  
  16.        Me.ButtonShowFormA = New Button With
  17.            {
  18.              .Text = "Show FormA",
  19.              .Location = New Point(10, 10)
  20.            }
  21.  
  22.    End Sub
  23.  
  24.    Private Sub FormB_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
  25.        Dim frm As New FormA
  26.        frm.Show()
  27.    End Sub
  28.  
  29.    Private Sub FormDlg_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
  30.        Me.Controls.Add(Me.ButtonShowFormA)
  31.    End Sub
  32.  
  33.    Private Sub ButtonShowFormA_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ButtonShowFormA.Click
  34.        Me.Close()
  35.    End Sub
  36.  
  37. End Class

Pulsa el botón: se oculta el FORMA (y elimina los controles), y se muestra el FORMB
Pulsa el botón: Se CIERRA el FORMB y se carga el FORMA (recarga los controles)

Y aquí es donde se lía la cosa. Al cerrar (con el botón cerrar X) el formulario FORMA, la aplicación no se cierra se queda pendiente.

Ese es el problema.

No se si es que al hacer esto:

Código
  1.   Private Sub FormB_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
  2.        Dim frm As New FormA
  3.        frm.Show()
  4.    End Sub

Se crea otro FormA visible con todos sus controles y queda pendiente en memoria el FormA inicial sin controles que hemos ocultado mediante HIDE.

La verdad no se.

Se soluciona añadiendo END, pero no debería ser necesario. Algo raro ocurre.

Tiene que haber alguna manera de crear de nuevo todos los controles cuando el FormA vuelva a ser visible

si hago esto al cerrar el FormA y mostrar el FormB, simplemente se cierra la aplicación:

Código
  1.    Private Sub ButtonShowFormB_Click(ByVal sender As Object, ByVal e As EventArgs)
  2.        'Libera los controles
  3.        '  ButtonShowFormB.Dispose()
  4.        'RemoveHandler Me.ButtonShowFormB.Click, AddressOf ButtonShowFormB_Click
  5.        MyBase.Dispose(disposing:=True) 'o  Me.Dispose()
  6.  
  7.        'Oculta el form
  8.        Me.Hide()
  9.  
  10.        'Muestra el Form2
  11.        FormB.Show()
  12.    End Sub


Si me solucionas el problema te cuelgo el programa  ::)


« Última modificación: 22 Septiembre 2016, 17:23 pm por okik » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.878



Ver Perfil
Re: Problema ocultando Form1 y liberando sus controles
« Respuesta #3 en: 22 Septiembre 2016, 18:10 pm »

Lo que quiero es iniciar el segundo formulario y  FormA ocultarlo mediante 'HIDE". Pero al ocultar el principal realmente sigue en memoria y para liberar memoria quería eliminar todos los eventos y controles del FormA , al mostrar el FormB

Te entiendo, pero no no no no no no, no... no, y ¡NO!.  No debes intentar hacer eso okik, arriba al principio del comentario te expliqué la razón.

De todas formas te explico por que te sucede eso, creo que estás atribuyéndole propósitos adicionales al método Form.Show(), ese método solo sirve para mostrar el Form, no para instanciarlo, es decir, si tu liberas un control del FormA, luego ocultas ese FormA llamando a Form.Hide() y por último muestras el FormA llamando a Form.Show(), en ese procedimiento lo único que has hecho es liberar un control y ocultar y mostrar el form, el control no se va a volver a colocar ahí por arte de mágia, debes volver a crear una instancia del control, y añadirla a la colección de controles del Form.

Para solucionarlo debidamente, podrías controlar el evento Form.VisibleChanged de la siguiente manera:
Código
  1. Public NotInheritable Class FormMain : Inherits Form
  2.  
  3.    Friend WithEvents ButtonShowFormB As Button
  4.  
  5.    Public Sub New()
  6.        MyClass.InitializeComponent()
  7.        Me.Text = "FormA"
  8.    End Sub
  9.  
  10.    Private Sub FormMain_VisibleChanged(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.VisibleChanged
  11.  
  12.        If DirectCast(sender, Form).Visible Then
  13.            Me.ButtonShowFormB = New Button With
  14.                    {
  15.                      .Text = "Show FormB",
  16.                      .Location = New Point(10, 10)
  17.                    }
  18.            Me.Controls.Add(Me.ButtonShowFormB)
  19.        End If
  20.  
  21.    End Sub
  22.  
  23.    Private Sub ButtonShowFormB_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ButtonShowFormB.Click
  24.        Me.ButtonShowFormB.Dispose()
  25.        Me.ButtonShowFormB = Nothing
  26.        Me.Hide()
  27.  
  28.        FormB.Show()
  29.    End Sub
  30.  
  31. End Class

Si realmente te empeñas en liberar los recursos del Form principal a deshora, fíjate bien en esta instrucción que añadí:
Citar
Código
  1. Me.ButtonShowFormB = Nothing
...después de llamar al método Control.Dispose() es necesario asignarle un valor nulo al objeto tal y como hice, para facilitarle la tarea al GarbageCollector indicándole que puede proceder a liberar los recursos del control cuanto antes.

Saludos!
« Última modificación: 22 Septiembre 2016, 18:21 pm por Eleкtro » En línea



okik


Desconectado Desconectado

Mensajes: 462


Ver Perfil
Re: Problema ocultando Form1 y liberando sus controles
« Respuesta #4 en: 22 Septiembre 2016, 22:06 pm »

Bueno gracias funciona.

Sin embargo no es problema así usar Show. Funciona ponga Show que Visible=true. Pero de forma directa sin usar NEW

Código
  1.  
  2. Private Sub FormA_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
  3.        '  FormA.Visible = True
  4.        FormA.Show()
  5.    End Sub
  6.  


(Esto todo en un formulario)

Código
  1. Public NotInheritable Class FormA : Inherits Form
  2.  
  3.    Friend ButtonShowFormB As Button
  4.  
  5.    Public Sub New()
  6.        MyClass.InitializeComponent()
  7.        Me.Text = "FormA"
  8.    End Sub
  9.  
  10.    Private Sub FormA_VisibleChanged(sender As Object, e As EventArgs) Handles Me.VisibleChanged
  11.  
  12.        If DirectCast(sender, Form).Visible Then
  13.            Me.ButtonShowFormB = New Button With
  14.       {
  15.         .Text = "Show FormB",
  16. .Location = New Point(10, 10)
  17.       }
  18.            Me.Controls.Add(Me.ButtonShowFormB)
  19.            AddHandler Me.ButtonShowFormB.Click, AddressOf ButtonShowFormB_Click
  20.  
  21.        End If
  22.    End Sub
  23.  
  24.  
  25.    Private Sub FormMain_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
  26.        Me.Controls.Add(Me.ButtonShowFormB)
  27.    End Sub
  28.  
  29.    Private Sub ButtonShowFormB_Click(ByVal sender As Object, ByVal e As EventArgs)
  30.        RemoveHandler Me.ButtonShowFormB.Click, AddressOf ButtonShowFormB_Click
  31.        Me.ButtonShowFormB.Dispose()
  32.        Me.ButtonShowFormB = Nothing
  33.        Me.Hide()
  34.        FormB.Show()
  35.    End Sub
  36.  
  37.  
  38. End Class
  39.  
  40. Public NotInheritable Class FormB : Inherits Form
  41.    Friend ButtonShowFormB As Button
  42.    Public Sub New()
  43.        Me.Text = "FormB"
  44.        Me.ButtonShowFormB = New Button With
  45.            {
  46.              .Text = "Show FormA",
  47.              .Location = New Point(10, 10)
  48.            }
  49.        AddHandler Me.ButtonShowFormB.Click, AddressOf ButtonShowFormB_Click
  50.    End Sub
  51.  
  52.    Private Sub FormA_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
  53.        '  FormA.Visible = True
  54.        FormA.Show()
  55.    End Sub
  56.  
  57.    Private Sub FormMain_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
  58.        Me.Controls.Add(Me.ButtonShowFormB)
  59.    End Sub
  60.  
  61.    Private Sub ButtonShowFormB_Click(ByVal sender As Object, ByVal e As EventArgs)
  62.        Me.Close()
  63.    End Sub
  64. End Class


Esto ya lo contemple y crear un proceso que cargue los controles desde el Closing del Form2. Pero pensé que no era la forma correcta de hacerlo. Supongo que si el número de controles y eventos del formulario principal no es muy grande, no pasa nada que no se eliminen los eventos y los controles.

« Última modificación: 22 Septiembre 2016, 22:10 pm por okik » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Enviar form1 via mail programado desce VB
Programación Visual Basic
diodo 4 1,500 Último mensaje 9 Abril 2007, 01:51 am
por diodo
Propiedad Visible del Form1!!
Programación Visual Basic
Hole_System 6 2,652 Último mensaje 29 Mayo 2008, 16:26 pm
por seba123neo
modulo sin lanzar form1
.NET (C#, VB.NET, ASP)
AiM 8 4,821 Último mensaje 24 Diciembre 2009, 14:29 pm
por raul338
Problema con controles y UpdateLayeredWindow
Programación C/C++
ThunderCls 2 3,564 Último mensaje 17 Agosto 2010, 14:51 pm
por ThunderCls
Problema con controles web ieframe.dll
Programación Visual Basic
Luna71c0 2 3,981 Último mensaje 9 Julio 2011, 07:20 am
por Luna71c0
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines