Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Zur Laufzeit Controls aktualisieren ...
mrennen
myCSharp.de - Member



Dabei seit:
Beiträge: 166
Herkunft: Duisburg

Themenstarter:

Zur Laufzeit Controls aktualisieren ...

beantworten | zitieren | melden

Hallo mal wieder und herzlichen Dank für die letzten Hilfestellungen.

Aktuell bastel ich an einer Umsetzung der Mehrsprachigkeit mit besonderen Kriterien bei welchem ich Hilfe gebrauchen könnte :-)

Ich habe eine Winform welche über unterschiedliche Container verfügt (TabControl, GroupControl, Grid).

Zusätzlich verfüge ich über eine SQL Tabelle welche vom Benutzer pflegbar die einzelnen Übersetzungen der Labels, Buttons, usw. beinhaltet.

Im Load der Winform fülle ich ein DataSet mit allen vorkommenden Übersetzungen, abhängig von der gewählten Sprache - alles super bislang.

Gibt es eine Möglichkeit alle Controls einer Winform zu durchlaufen, unabhängig von "SubControls" ?

Wenn ich die einzeln durchlaufe werden 2 Fälle nicht aktualisiert:

- Der Button "btnLoeschen" bekommt seinen Text "&Löschen" nicht (alle anderen Buttons schon)
- Das zweite GroupControl bekommt seinen Text nicht (identischer Text wie das erste GroupControl, nur halt anderer Reiter)

Hoffe das ist so einigermaßen verständlich...
private Nachricht | Beiträge des Benutzers
mrennen
myCSharp.de - Member



Dabei seit:
Beiträge: 166
Herkunft: Duisburg

Themenstarter:

beantworten | zitieren | melden

Das hier geht nicht (einzeln jedes Control durchlaufen):


private void Translate()
        {
            DataSet translate = sda.GetUebersetzung(AktuelleSprache, Name);

            foreach (DataRow dr in translate.Tables[0].Rows)
            {
                foreach (Control ctrl in this.Controls)
                {
                    if (ctrl.Name == dr[0].ToString())
                        ctrl.Text = dr[1].ToString();
                }

                foreach (Control ctrl in xtcTrans_Gruende.Controls)
                {
                    if (ctrl.Name == dr[0].ToString())
                        ctrl.Text = dr[1].ToString();
                }

                foreach (Control ctrl in xtpUebersicht.Controls)
                {
                    if (ctrl.Name == dr[0].ToString())
                        ctrl.Text = dr[1].ToString();
                }

                foreach (Control ctrl in xtpEigenschaften.Controls)
                {
                    if (ctrl.Name == dr[0].ToString())
                        ctrl.Text = dr[1].ToString();
                }

                foreach (Control ctrl in gcFunktionen.Controls)
                {
                    if (ctrl.Name == dr[0].ToString())
                        ctrl.Text = dr[1].ToString();
                }

                foreach (Control ctrl in gcEFunktionen.Controls)
                {
                    if (ctrl.Name == dr[0].ToString())
                        ctrl.Text = dr[1].ToString();
                }
            }

            translate.Dispose();
        }
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von mrennen am .
Attachments
private Nachricht | Beiträge des Benutzers
rollerfreak2
myCSharp.de - Member

Avatar #avatar-3271.jpg


Dabei seit:
Beiträge: 916

beantworten | zitieren | melden

Hallo mrennen,

hast du den mal debugged und geschaut ob das Control überhaupt in der Iteration auftaucht? Ich tippe darauf das du es gar nicht durch läufst.
Again what learned...
private Nachricht | Beiträge des Benutzers
jreusch
myCSharp.de - Member

Avatar #avatar-3346.jpg


Dabei seit:
Beiträge: 296

beantworten | zitieren | melden

Hallo mrennen,

jedes Control hat eine Eigenschaft Controls in der alle Kinderelemente enthalten sind.

Du musst also nur rekursiv vom obersten Control (Form) alle Controls einsammeln und darauf dann deine Übersetzung anwenden.

Es gibt aber wesentlich konfortablere Methoden zum Thema Lokalisierung. Aber du schreibst ja "besondere Anforderungen".

Grüße
private Nachricht | Beiträge des Benutzers
mrennen
myCSharp.de - Member



Dabei seit:
Beiträge: 166
Herkunft: Duisburg

Themenstarter:

beantworten | zitieren | melden

Habe ich eben nochmal debuggt und der läuft wirklich da rein (im beiden Fällen) und macht sein Update ...
private Nachricht | Beiträge des Benutzers
rollerfreak2
myCSharp.de - Member

Avatar #avatar-3271.jpg


Dabei seit:
Beiträge: 916

beantworten | zitieren | melden

Aber wenn er doch sein Update macht, dann sollte die Übersetzung doch durchgeführt worden sein. Hast du mal anschließend ein Invalidate() auf das Control ausgeführt? Dies sollte zwar nicht nötig sein, da das Control selber dafür zu sorgen hat, aber versuch es mal.
Again what learned...
private Nachricht | Beiträge des Benutzers