Dropdownboxen verketten mehrsprachig

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Dropdownboxen verketten mehrsprachig

    Hallo Gemeinde,

    ich bin neu hier und als Neuer wünsche ich erst mal ALLEN ein frohes neues Jahr und hoffe auf gute Gesundheit und dass uns Covid-19 uns nächstes Jahr nicht mehr im Würgegriff hat.

    Ich kenne dieses Forum schon länger und es half mir schon oft, allein durch Mitlesen. Da ich bisher ausschließlich in VBA unterwegs war und dort ein Programm entwickelte mit dem man Baupreise kalkulieren kann, ist nun der Wunsch gewachsen es in eine ordentliche Programmiersprache umzutüten. Allein weil ich auch von den Möglichkeiten in VBA zu begrenzt war. Einige Ideen ließen sich nur umständlich realisieren. Da VBA auch Basic ist, wollte ich bei der Sprache bleiben. Nachdem ich mir VS installiert hatte, habe ich aber schnell gemerkt, dass viel Zeit im Designer draufgeht und man dort schon viel erledigen kann was in VBA alles von Hand programmiert werden muss. Auch die Klassen in VB.net erschlagen einen ja förmlich.

    Ich habe einige Tuts hier gefunden, die mir halfen. Ich hänge jetzt an einer Stelle fest, die sehr essenziell ist. Wenn ich die nun schlecht angehe, dann verschwende ich zu viel Zeit und muss es später auch noch ändern. Bestimmt kennt hier jemand einen Denkansatz der funktionell ist oder kann mir sagen, ob ich richtig liege. Leider weiß ich im Moment gar nicht wie es umsetzen soll. Ich habe noch einen Screenshot angehängt, der die Kundenverwaltung meines Programms anzeigt. Dort ist in der Dropdownbox ein Land auszuwählen und rechts daneben bei "Region:" dann das Bundesland zum gewählten Staat. Wir sind uns einig, dass Frankreich ein paar andere Regionen hat als Deutschland oder England. Ich habe zwei Wünsche.

    1) möchte ich das Land aus einer Resourcendatei auswählen, die händisch geändert und angepasst werden kann, da man in meinem Programm die Sprachen deutsch, englisch und französisch wählen kann, wäre es interessant dass je nach gewählter Sprache, dann die Länder eben in dieser in der Auflistung erscheinen.

    2) Wenn dann die Auswahl getroffen wurde, soll per Code die Dropdownbox "Region" schon mit den zugehörigen Bundesländern/Districten befüllt werden. Hier will ich mir eine Übersetzung in die jeweilige Sprache ersparen, da es diese nur teilweise gibt.

    Zum Durchführen dachte ich an eine Datatable in meinem schon existierenden DataSet. Dort habe ich Tabellen, die einmal die Firmendaten bereit halten und mit einem DataViewGrig gebunden sind und eine, die die den Kontakt zu der Frma angibt. Verbunden sind diese Tabellen über die Spalte "Firma". Der Mitarbeiter kann ja die Firma verlassen/wechseln. Ich denke aber nicht, dass eine solche Lösung für meine beiden Wünsche oben in Frage kommen. Eine weitere Möglichkeit könnten die Resourcendateien der einzelnen Sprache sein, welche bisher Strings für MsgBox-Meldungen enthalten. Das funktioniert auch.

    Kann man nicht eine Liste der Länder zu jeder Sprachdatei anlegen und mit der DropDownBox binden ?

    Ich hoffe mich verständlich ausgedrückt zu haben und bin gerne bereit zu einigen Punkten mehr ins Detail zu gehen so nötig von Eurer Seite.

    Vielen Dank fürs lesen bis hierhin.

    Gruß,
    Tuere

    PS: (Ich benutze VS2017 Comm.)
    Bilder
    • Screenshot.jpg

      128,53 kB, 1.186×818, 24 mal angesehen
    zunächstmal Frage: Arbeitest du wirklich in WPF?
    Da ist es nämlich sehr ungewöhnlich und unkomfortabel, mit einem Dataset zu arbeiten.

    Ansonsten sind Länder, Regionen, Sprachen Daten, und gehören somit ins Datenmodell (also ins typisierte Dataset).
    Du verwendest doch ein typisiertes Dataset, oder?

    WinForms kennt auch spezialisierte Sprach-Resource-Files, aber falls du wirklich in WPF unterwegs bist (so ist dein Thread ja getaggt) - dann spielt das eh keine Rolle.
    Hallo und Willkommen im Forum

    Ich verschiebe das mal da sowohl das UI als auch das Fenstersymbol ja fast nur WinForms sein können.
    @ErfinderDesRades somit genau dein Thema 8o

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    @Tuereintreter Ebenfalls willkommen im Forum. :thumbup:
    Zur Mehrsprachigkeit von Programmen schau mal hier rein:
    Programme mehrsprachig erstellen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Programme mehrsprachig erstellen

    Jo, das ist ein schöner Ansatz, um alle Buttons und Labels sprach-variabel zu kriegen - also Controls.

    Daten kriegt man damit aber nicht sprach-variabel, oder?
    Er will ja u.a. in einer Combobox alle Staaten anzeigen, je Staat alle Regionen, je Region alle Postleitzahlen, etc.
    Dazu gibt das Winforms-Lokalisierungs-System wie in deim Tut beschrieben nichts her, oder irre ich mich (ich hab die Tut-Sources nicht ausprobiert)?
    @ErfinderDesRades:
    Anbei ein Screenshot (NeueApp) was ich wählte um die Anwendung zu erstellen. Ich wählte das, da es in einem Buch so vorgeschlagen wurde. Wenn dies nicht WPF ist, warum ist es ungewöhnlich dort mit DataSets zu arbeiten ?
    Ja, ich habe vor mit typisierten Datentabellen zu arbeiten. Hierfür auch ein Screenshot (DataTables).

    @Nofear23m
    Danke fürs Verschieben. Ich dachte ich wäre richtig gewesen zuvor.

    @RodFromGermany
    Das Tut von dir ist mir bekannt. Habe es auch angewendet mit dem kleinen Unterschied, du empfiehlst die Dateien zu verschieben in den MyProject Ordner. Danach waren sie trotz umbenennen nicht mehr verfügbar im Projekt und die Designerseite des Forms wurde nicht mehr angezeigt. Hatte gedauert bis ich herausfand wie man das rückgängig macht. Wenn ich sie lasse wo sie generiert werden ist alles in Butter.

    Gruß
    Bilder
    • DataTables.jpg

      294,23 kB, 1.689×899, 13 mal angesehen
    • NeueApp.jpg

      114,05 kB, 941×653, 14 mal angesehen
    Hallo

    Tuereintreter schrieb:

    Ich wählte das, da es in einem Buch so vorgeschlagen wurde.

    Ja, das ist WinForms wie man am Screenshot sieht, und eines darüber ist das WPF Template. WPF hat eine völlig andere UI Architektur.

    Tuereintreter schrieb:

    Wenn dies nicht WPF ist, warum ist es ungewöhnlich dort mit DataSets zu arbeiten ?

    Er meinte das es in WPF unüblich ist, unter WinForms (wo du ja unterwegs bist) ist es sogar sehr üblich.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Tuereintreter schrieb:

    Leider weiß ich im Moment gar nicht wie es umsetzen soll. ... Dort ist in der Dropdownbox ein Land auszuwählen und rechts daneben bei "Region:" dann das Bundesland zum gewählten Staat.
    Das ist ein klassischer ParentChild-View.
    Dazu gibts ein Filmle auf die vier Views auf Video
    Im Film V ist der ParentChild-View aber mit Datagridviews umgesetzt.


    Weiter unten in Film X wird auch gezeigt, wie man Comboboxen bindet - damit kann man den ParentChildView ebenso umsetzen, und damit hast du, was du bestellt hast.

    Wie gesagt, das geht, indem man ein geeignetes Datenmodell anlegt, im Dataset (dafür isses da).

    Mit Resourcen-Dateien kann man keinen Parent-Child-View aufbauen, bzw. nur über erhebliche Klimmzüge, also indem man die Resource-Files anders verwendet, als sie eiglich gedacht sind.
    Aber Einsteigern empfehle ich ganz grundsätzlich, sich darauf zu konzentrieren, erstmal zu lernen, für was die Dinge eiglich gedacht sind.
    Das abwandeln und iwelche ungewöhnlichen Mätzchen machen sollte man sich für später aufheben, wenn man sich besser auskennt.
    @ErfinderDesRades:
    Das Video hatte ich gestern gesehen. Bin aber nicht im Traum darauf gekommen, dass es das ist was ich brauche. Danke für den Hinweis.
    Ich habe mir gerade den Sourcecode von PersistData und PhoneBook heruntergeladen und studiere dort, wie ich von der Dgv in die XML schreibe und zurück. Wenn ich das erledigt habe wende ich mich wieder den Daten in den Dropdownboxen zu.

    Ich merke, dass ein erheblicher Unterschied von VBA (VB6) und .NET besteht.
    Danke allen hier. Wenn ich zu den Mätzchen komme, kann ich ja mal posten wie ich es mache.

    Gruß

    Tuereintreter schrieb:

    du empfiehlst die Dateien zu verschieben in den MyProject Ordner.
    Wie ganz genau hast Du denn das gemacht?
    ====
    @ErfinderDesRades Das Tut macht alles, was fix an der GUI angezeigt wird oder was als Textbaustein verwendet werden kann.
    Alle vorkommenden Strings müssten als String-Ressource eingebunden und lokalisiert werden.
    Dies alles sind fixe Strings. Dynamische Strings kommen da nicht vor.
    Das einzige, was mir noch vorschwebt, ist die Verwendung der entsprechenden CultureInfo, da werden Datümmer, Uhrzeiten und solch lokalisiert.

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „RodFromGermany“ ()