Ich habe eine winforms-Anwendung, die Benutzer müssen in der Lage sein, die Sprache zur Laufzeit zu ändern.So ändern Sie die Sprache zur Laufzeit ohne Layout-Probleme
Um den Schalter zu verallgemeinern und vermeiden harte Codesteuer Namen, die ich die folgende Erweiterung versucht:
internal static void SetLanguage(this Form form, CultureInfo lang)
{
ComponentResourceManager resources = new ComponentResourceManager(form.GetType());
ApplyResourceToControl(resources, form, lang);
resources.ApplyResources(form, "$this", lang);
}
private static void ApplyResourceToControl(ComponentResourceManager resources, Control control, CultureInfo lang)
{
foreach (Control c in control.Controls)
{
ApplyResourceToControl(resources, c, lang);
resources.ApplyResources(c, c.Name, lang);
}
}
Diese alle Fäden ändert.
Ein Nebeneffekt davon ist jedoch, dass der gesamte Inhalt des Fensters an die ursprüngliche Windows-Startgröße angepasst wird, unabhängig von der aktuellen Größe.
Wie kann ich verhindern, dass sich das Layout ändert oder eine neue Layoutberechnung einleitet?
Ich wünschte, ich kann Sie mehr als einmal sehr hilfreich bewerten! – Bosak