Cambiar CurrentUICulture en tiempo de ejecución en un formulario localizable en WinForms

He estado buscando cómo cambiar el idioma de un formulario que tiene elLocalizable atributo establecido en verdadero.

https://msdn.microsoft.com/en-us/library/system.threading.thread.currentuiculture(v=vs.110).aspx

Esto es para establecer el idioma del formulario, pero esto debe establecerse antes de instanciar el formulario. No se puede llamar después de este evento.

Buscando información, he visto la siguiente pregunta:https://stackoverflow.com/a/11738932/3286975 pero, como decía un comentario, tengo controles dentro de un TabControl y un MenuStrip, por lo que no se ven afectados.

He tratado de modificar esto, obteniendo todos los controles del Formulario sin suerte.

En este menú llamo a la siguiente devolución de llamada:

    private void englishToolStripMenuItem_Click_1(object sender, EventArgs e)
    {
        string lang = (string) ((ToolStripMenuItem) sender).Tag;
        base.Culture = CultureInfo.CreateSpecificCulture(lang);
    }

    private void spanishToolStripMenuItem_Click(object sender, EventArgs e)
    {
        string lang = (string) ((ToolStripMenuItem) sender).Tag;
        base.Culture = CultureInfo.CreateSpecificCulture(lang);
    }

Cambio la cultura usando la etiqueta.

Cuando hago clic, no pasa nada. Además, he modificado un poco el método ApplyResources de la respuesta mencionada.

private void ApplyResources(Control parent, CultureInfo culture)
{
        this.resManager.ApplyResources(parent, parent.Name, culture);

        foreach (Control ctl in parent.IterateAllChildren())
        {
            //this.ApplyResources(ctl, culture);
            this.resManager.ApplyResources(ctl, ctl.Name, culture);
        }
}

Donde IterateAllChildren es lo siguiente:https://stackoverflow.com/a/16725020/3286975

Además, probé con (System.LINQ):Controls.OfType<Label>() (porque tengo una etiqueta para probar esto) sin suerte ...

Pero cuando selecciono el idioma español, no se cambia el texto.

Entonces, tal vez, estoy fallando con los niños. O tal vez llamando al métodoCreateCulture, No lo sé.

¡Gracias por adelantado!

EDITAR:

He probado para obtener el Administrador de recursos de mi formulario por parte de Culture Info y me devuelve el predeterminado cada vez:

 ResourceSet resourceSet = new ResourceManager(typeof(frmCredentials)).GetResourceSet(new CultureInfo(lang), true, true);
            foreach (DictionaryEntry entry in resourceSet)
            {
                string resourceKey = entry.Key.ToString();
                object resource = entry.Value; //resourceSet.GetString(resourceKey);
                if (resource.GetType().Equals(typeof(string)))
                    Console.WriteLine("Key: {0}\nValue: {1}\n\n", resourceKey, (string) resource);
            }

Dóndenew CultureInfo(lang), También he probado:new CultureInfo("es") & Thread.CurrentThread.CurrentCulture (CurrentUICulture) sin suerte. Es como si nunca existiera o se reemplazara, pero en mi diseño y explorador de archivos puedo ver los archivos.

EDIT2:

Quizás es porque estoy usando ILMerge para fusionar todos los dlls en uno único. Estoy revisando esto:Implementación de Windows Forms en un solo ensamblaje en varios idiomas (ILMerge y ensamblados por satélite / localización): ¿es posible?

Respuesta a EDIT2:

Sí, al eliminar ILMerge, el problema está resuelto, y la primera solución que di resuelve esto. Pero por alguna razón, el idioma español se toma como el idioma predeterminado, y cuando traté de obtener el conjunto de recursos, no me devolvió nada.

Además, configuré el atributo Localizable en falso y no creó un archivo resx predeterminado con valores. No sé si esta es una buena práctica.

Intentaré algo nuevo ...

Respuestas a la pregunta(3)

Su respuesta a la pregunta