none
Problema con recarga de formulario

    Pregunta

  • Hola a todos:

    Tengo un form y en el cual hay un menú para cambio de idioma, resulta que al pulsar el evento click de un idioma cualquiera, lo cambia perfectamente, El problemilla está en que la pantalla se minimiza por un instante y después vuelve a su tamaño normal porque le he puesto "show" ya que si no se queda mas pequeña (mas o menos del mismo tamaño que el de la pantalla de diseño) y era ver de que forma correcta puedo "recargar" ese form cuando cambia el idioma. El form no es modal.

    Lo estoy intentando arreglar probando Activate, etc. pero no funciona bien.

     Private Sub mnuIdIngles_click(sender As System.Object, e As System.EventArgs) Handles mnuIdIngles.Click
    
            VarGlobal.strIdioma = "Inglés"
            AccesoDatosFormulas.GrabarIdioma()
    
            If VarGlobal.strIdioma = "Inglés" Then
                ChangeLocaleCultureRunTime("en-US")
            Else
                ChangeLocaleCultureRunTime("en")
            End If
    
            'Me.Activate()
            Me.Hide()
            Me.Show()
    
    
            Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US")
            Thread.CurrentThread.CurrentUICulture = New CultureInfo("en-US")
    
        End Sub

    Muchas gracias a todos.

    Gemma


    viernes, 20 de enero de 2017 19:10

Respuestas

  • Hola. Has probado lo indicado en mi respuesta?

    Private Sub ChangeLocaleCultureRunTime(ByVal CultureString As String)
    Me.SuspendLayout() 
            'Actualizar en el hilo actual la la informacion de cultura con la "cultura" seleccionada
            Threading.Thread.CurrentThread.CurrentUICulture = New System.Globalization.CultureInfo(CultureString)
    
            Dim culture_info As New CultureInfo(CultureString)
            Dim component_resource_manager As New ComponentResourceManager(Me.GetType)
    
            'Aplicar recursos al formulario
            component_resource_manager.ApplyResources(Me, "$this", culture_info)
    
            'Aplica los recursos a todos los controles del formulario:
            For Each ctl As Control In Controls
                component_resource_manager.ApplyResources(ctl, ctl.Name, culture_info)
            Next ctl
    
            RelacionRecursosIdiomas()
    
    Me.ResumeLayout()
    
        End Sub


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    • Marcado como respuesta gemma_campillo sábado, 21 de enero de 2017 15:41
    sábado, 21 de enero de 2017 15:21

Todas las respuestas

  • En el load del formulario coloca la siguiente linea:

    Me.WindowState = FormWindowState.Maximized

    Saludos

    y se te funciona marca la respuesta como correcta

    sábado, 21 de enero de 2017 1:13
  • Hola gasgdl:

    Gracias por responder. El problema no viene por ahí, ya que en todos los loads de mis form tengo dicha expresión:

       Location = Screen.PrimaryScreen.WorkingArea.Location
            Size = Screen.PrimaryScreen.WorkingArea.Size
            WindowState = FormWindowState.Maximized
     

    El problema radica cuando entra en:ChangeLocaleCultureRunTime("en-US") lo cual me minimiza la visión del form, es decir, lo hace más pequeño y después lo vuelve a poner a su tamaño origonal y lo que quiero evitar es ese paso o que el usuario no vea esos cambios de pantalla, aunque son rápidos evidentemente se ven.

    Un saludo.

    Gemma

    sábado, 21 de enero de 2017 7:25
  • Hola. Puedes poner el código de tu método ChangeLocaleCultureRunTime()? Tal vez deberias aplicar al inicio de ese método una llamada a Me.SuspendLayout() y al finalizar una llamada a Me.ResumeLayout() siendo Me el formulario.

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    sábado, 21 de enero de 2017 14:56
  • Hola Sergio, buenas tardes.

    Gracias por contestar.

    Mira el método que me pides es el siguiente:

     Private Sub ChangeLocaleCultureRunTime(ByVal CultureString As String)
    
            'Actualizar en el hilo actual la la informacion de cultura con la "cultura" seleccionada
            Threading.Thread.CurrentThread.CurrentUICulture = New System.Globalization.CultureInfo(CultureString)
    
            Dim culture_info As New CultureInfo(CultureString)
            Dim component_resource_manager As New ComponentResourceManager(Me.GetType)
    
            'Aplicar recursos al formulario
            component_resource_manager.ApplyResources(Me, "$this", culture_info)
    
            'Aplica los recursos a todos los controles del formulario:
            For Each ctl As Control In Controls
                component_resource_manager.ApplyResources(ctl, ctl.Name, culture_info)
            Next ctl
    
            RelacionRecursosIdiomas()
    
        End Sub

    RelacionRecursosIidiomas lo que hace es cambiar simplemente los textos del form en que se encuentre.

    Un cordial saludo y gracias como siempre.

    Gemma

    sábado, 21 de enero de 2017 15:00
  • Hola. Has probado lo indicado en mi respuesta?

    Private Sub ChangeLocaleCultureRunTime(ByVal CultureString As String)
    Me.SuspendLayout() 
            'Actualizar en el hilo actual la la informacion de cultura con la "cultura" seleccionada
            Threading.Thread.CurrentThread.CurrentUICulture = New System.Globalization.CultureInfo(CultureString)
    
            Dim culture_info As New CultureInfo(CultureString)
            Dim component_resource_manager As New ComponentResourceManager(Me.GetType)
    
            'Aplicar recursos al formulario
            component_resource_manager.ApplyResources(Me, "$this", culture_info)
    
            'Aplica los recursos a todos los controles del formulario:
            For Each ctl As Control In Controls
                component_resource_manager.ApplyResources(ctl, ctl.Name, culture_info)
            Next ctl
    
            RelacionRecursosIdiomas()
    
    Me.ResumeLayout()
    
        End Sub


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    • Marcado como respuesta gemma_campillo sábado, 21 de enero de 2017 15:41
    sábado, 21 de enero de 2017 15:21
  • Hola Sergio:

    Perfecto, ya no me hace la minimización del form ni nada, se cierra y se abre al momento con todo traducido. Llevo desde ayer probando y probando y nada.

    Sergio, querido amigo muchas gracias, me has solucionado un problema que me estaba dando la lata.

    Va muy bien.

    Un fuerte abrazo.

    Gemma.

    sábado, 21 de enero de 2017 15:41