none
No me cierra formulario. RRS feed

  • Pregunta

  • Hola a todos:

    Parecerá una tontería, pero no logro cerras el frmDemo para que me pase al siguiente formulario.

    Es un formulario de "demo" que una vez acepta el usuario el mismo, pasa al formulario empresas por lo que tendría que cerrarse el frmDemo. Pues no hay manera, ni con me.clolse, ni con Exit.

    Os pongo el form porque a lo mejor estoy encabezonada y es que me  falta algo en el subMain o el frmDemo cuando aceptamos el mismo y nos tiene que cerrar este y abrir el de frmEmpresas.Os pongo el código del Submain y el de Acepat "demo".

    Public Class Submain
    
        <STAThread()> _
        Friend Shared Sub Main()
    
            Application.EnableVisualStyles()
            Application.SetCompatibleTextRenderingDefault(False)
    
            AddHandler Application.ThreadException, AddressOf Application_ThreadException
            'Added this
            AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf UnhandledExceptionEventRaised
            'MsgBox("Cargando con éxito el main")
    
            'Mostramos el tipo de versión cargada por defecto.
            AccesoDatosConsultas.TIPO_VERSION()
            modIdiomas.CodigoPaises()
    
    
            Using frm As New frmPresentacion()
                frm.ShowDialog()
            End Using
    
    
            If VarGlobal.WControl = "0" Or VarGlobal.WControl = "2" Or VarGlobal.WControl = "6" Or VarGlobal.WControl = "8" Or VarGlobal.WControl = "9" Then
                AccesoLogica.MostrarDatosInstalaciónDemo()
                CargarDemo()
                Exit Sub
            ElseIf VarGlobal.WControl = "K" Then
                Dim frmAct As New frmActivacion
                frmAct.ShowDialog()
                Exit Sub
            ElseIf VarGlobal.WControl = "X" Then
                Exit Sub
            End If
    
          
            If modSeguridad.ExisteArchivoLicencia Then
                If modSeguridad.LicenciaCorrecta Then
                    ' MsgBox("Licencia correcta.")
                Else
                    NumeroMaquina() 'MsgBox("Licencia incorrecta.")
                    Exit Sub
                End If
            Else
                NumeroMaquina() 'MsgBox("Licencia incorrecta.")
            End If
    
            Using lgn As New frmLogin()
                lgn.ShowDialog()
            End Using
    
            If LoginService.ContrasenaCorrecta = False Then
                Exit Sub
            Else
                Dim emp As New frmEmpresas
                emp.Show()
                Application.Run()
            End If
    
        End Sub

    LLamada desde el botón "Aceptar" del formDemo.

      Private Sub cmdAceptar_Click(sender As Object, e As EventArgs) Handles cmdAceptar.Click
            Dim a As Reflection.Assembly = Reflection.Assembly.GetExecutingAssembly
            Dim rm As New Resources.ResourceManager(a.GetName.Name & ".Textos", a)
    
            Call Demo()
    
            If VarGlobal.FechaInstalacion > Today.Date Then
                AccesoLogica.GrabarVariableControlenDemo_Control_9()
                cmdAceptar.Enabled = True
            End If
    
            If VarGlobal.WControl = "6" Then
                Label2.Visible = True
                Label2.Text = "- " & rm.GetString("ElperiodoVerDemoEsDe") & " 30 " & rm.GetString("días") & "." 'El período de la versión Demo es de 30 días."
            Else
                Label2.Visible = True
                Label2.Text = "- " & rm.GetString("ElperiodoVerDemoEsDe") & " 10 " & rm.GetString("días") & "." 'El período de la versión Demo es de 10 días."
            End If
    
            If VarGlobal.WControl = "1" Then
                Dim frmempresas As New frmEmpresas
                frmempresas.ShowDialog()
                Me.Close()
            End If
    
            If VarGlobal.WControl = "2" OrElse VarGlobal.WControl = "6" Then
    
                Using frmempresas As New frmEmpresas
                    frmempresas.ShowDialog()
                    Exit Sub 'Me.Close()
                End Using
    
                'VarGlobal.MostrarMsgBox = True
                'Me.Hide()
    
                ''Using frm As New frmEmpresas()
                'Private m_frm As frmEmpresas = New frmEmpresas()
                '' Mostramos el formulario de manera modal.
                'frm.Show()
    
                MessageBox.Show("Para seleccionar cualquiera de las dos empresas de ejemplo, " & vbCrLf & _
                "pulse el botón ""SELECCIÓN"" y marque en la parrilla " & vbCrLf & _
                """ÍNDICE GENERAL DE EMPRESAS"" la que precise. La primera empresa " & vbCrLf & _
                "de ejemplo, contiene 5 períodos anuales y la segunda, contiene 12  " & vbCrLf & _
                "períodos mensuales. Después pulse el botón ACEPTAR." & vbCrLf & vbCrLf & _
                "Puede obtener ""Ayuda"" posicionándose sobre el botón que desee, o " & vbCrLf & _
                "bien puede acceder a la ""AYUDA"" general, pulsando la tecla 'F1'. " & vbCrLf & _
                "Aparte, tiene una ayuda rápida de pantalla, pulsando el botón de " & vbCrLf & _
                "'AYUDA PANTALLA'.", "INFORMACIÓN", MessageBoxButtons.OK, MessageBoxIcon.Information)  'vbInformation
    
    
            End If
    
    
            'If VarGlobal.WControl = "0" OrElse VarGlobal.WControl = "2" OrElse VarGlobal.WControl = "6" Then
            '    'Call Demo()
            '    Me.CalcDiasDemo()
            'End If
    
            If VarGlobal.WControl = "8" Then
                lblSituacDemo.Text = "El período de vigencia de la versión 'DEMO' ha expirado"
    
            ElseIf VarGlobal.WControl = "9" Then
                lblSituacDemo.Text = "Versión 'DEMO' bloqueada por alteración de funciones"
                Label8.Visible = True
            End If
    
            cmdAceptar.Enabled = False
    
        End Sub

    Un saludo a todos y gracias por intentar ayudarme.

    Gemma

    viernes, 31 de julio de 2015 17:56

Respuestas

  • El problema está en este código:

                Using frmempresas As New frmEmpresas
                    frmempresas.ShowDialog()
                    Exit Sub 'Me.Close()
                End Using

    Al mostrar el frmempresas como diálogo la ejecución del método se para hasta que se cierre el formulario. Es decir, no se va a ejecutar la instrucción Exit Subo Me.Close hasta que no se cierre el formulario frmempresas.

    Deberías mostrarlo como un formulario normal:

                Using frmempresas As New frmEmpresas
                    frmempresas.Show()
                    Exit Sub 'Me.Close()
                End Using


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    domingo, 2 de agosto de 2015 18:04

Todas las respuestas

  • Buenos días.

    Ya intentaste con Dispose? u ocultando el formulario con

    Me.Visible = False

    Feliz día.


    Rafo.

    domingo, 2 de agosto de 2015 14:55
  • El problema está en este código:

                Using frmempresas As New frmEmpresas
                    frmempresas.ShowDialog()
                    Exit Sub 'Me.Close()
                End Using

    Al mostrar el frmempresas como diálogo la ejecución del método se para hasta que se cierre el formulario. Es decir, no se va a ejecutar la instrucción Exit Subo Me.Close hasta que no se cierre el formulario frmempresas.

    Deberías mostrarlo como un formulario normal:

                Using frmempresas As New frmEmpresas
                    frmempresas.Show()
                    Exit Sub 'Me.Close()
                End Using


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    domingo, 2 de agosto de 2015 18:04
  • Hola gemma.

    tu problema es que estas mandando a llamar el Form Empresa como dialogo y de ahi en adelante el código del form demo se detiene y no pasa a la siguiente línea para cerrar el form demo por consiguiente el form demo se serrara luego de que cierres el form empresa que acabas de llamar.

    En vez de llamar el form empresas con .showDialog hazlo solo con .show

    Using frmempresas As New frmEmpresas 
    frmempresas.Show
    Me.Close() 
    End Using 
    


    Silvio Diaz

    domingo, 2 de agosto de 2015 18:30
  • Hola Asier, disculpas por no haber contestado antes.

    Ya me funciona como quería, el gran problema estaba en una duplicación del código del botón que vovía ha rehacer todo el proceso y por eso me fallaba.

    Muchas gracias por tu atención como siempre.

    Un cordial saludo.

    Gemma

    martes, 4 de agosto de 2015 6:19