DateInterval in Landessprache (ComboBox)

  • VB.NET
  • .NET (FX) 4.5–4.8

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

    DateInterval in Landessprache (ComboBox)

    Hallo erstmal an Alle hier, ich bin schon länger stiller Mitleser und habe schon das eine oder andere Problem mit Hilfe des Forums lösen können. Hier komme ich nun aber wirklich nicht weiter und deshalb bin auch ich jetzt angemeldet und fang' auch gleich an zu fragen.

    Ich habe eine ComboBox, die Mit Zeitintervallen als Werte gefüllt wird und dann an die Instanz einer Klasse gebunden wird.

    VB.NET-Quellcode

    1. VorgangVal = New ClassKKVorgang(KdNr, ArtNr)
    2. BindingSrcKKV.DataSource = VorgangVal
    3. ComboBoxAbrInt.Items.AddRange({DateInterval.Day, DateInterval.Month, DateInterval.Quarter, DateInterval.Year, DateInterval.Second})
    4. ComboBoxAbrInt.DataBindings.Add("SelectedItem", BindingSrcKKV, "AbrIntEin")


    Um die Datenhaltung kümmert sich die Klasse ClassKKVorgang.

    Das alles funktioniert auch ganz wunderbar.

    Der Einzige Schönheitsfehler ist, in der Combobox steht Zur Auswahl dann Day, Month, Quarter, Year, Second. Schön wäre doch eigentlich wenn dort Stattdessen Tag, Monat, Quartal, Jahr, Sekunde stehen würde.

    Deshalb die Frage:

    Gibt es die Möglichkeit die Darstellung mit VB.net "Bordmitteln" zu ändern, oder muss Ich dass dann halt mit den deutschen Entsprechungen als Strings arbeiten und diese selbst in DateInterval konvertieren?
    @modellflugwelt Willkommen im Forum. :thumbup:
    Du musst dann die Strings in die lokalisierten Ressourcen eintragen und als solche verwenden.
    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!
    DateInterval gibt es im VisualBasic-Namespace.
    Aber dort ist es eine Enumeration.
    docs.microsoft.com/de-de/dotne…interval?view=netcore-3.1

    Von daher verstehe ich nicht ganz, warum überhaupt Strings und nicht Zahlen angezeigt werden.

    Jedenfalls sehe ich das wie ErfinderDesRades: Die heißen wie sie heißen.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

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

    Willkommen im Forum.

    Wenn Dir die Begriffe nicht passen, leg doch ein eigenes Enum an, bei der die Begriffe heißen, wie Du es willst. Deren Zahlenwerte können doch dann identisch mit dem aus der DateInterval-Enum sein. Noch sehe ich kein Code, bei der das zum Problem werden könnte. Wenn es ihn gibt, stellt sich die Frage, wie man dort die DateInterval-Enum durch die eigene ersetzen kann. Sollte in den meisten Fällen kein Problem sein. Aber das ist ohne Code Spekulatius.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Na ich denke, dann erfreue ich mich daran, dass dort ganz komfortabel Strings, wenn auch in Englisch, erscheinen und belasse es im Sinne des schnellen Fortschreitens erstmal dabei. Ich glaube das ist den Usern zuzumuten. Schöner machen kann man ja immer noch ;)

    petaod schrieb:

    Von daher verstehe ich nicht ganz, warum überhaupt Strings und nicht Zahlen angezeigt werden.
    Die Combobox wendet zur Anzeige auf alle ihre Elemente Element.ToString() an, und dann kommen Enum die korrekten Enum-Namen bei raus - keine Zahlen (Obwohls ja eher Zahlen sind (Enum-Values eben), was inne Combo drinne ist).
    @modellflugwelt Meinst Du vielleicht so was:
    Form, ComboBox, 3 Labels
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Enum Test
    3. A1
    4. B2
    5. C3
    6. End Enum
    7. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    8. Me.ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList
    9. Dim dc = New Dictionary(Of Test, String)
    10. dc.Add(Test.A1, "Roulade mit Klößen")
    11. dc.Add(Test.B2, "xyz")
    12. dc.Add(Test.C3, "42")
    13. Dim source As New BindingSource()
    14. source.DataSource = dc
    15. Me.ComboBox1.DisplayMember = "Value"
    16. Me.ComboBox1.ValueMember = "Key"
    17. Me.ComboBox1.DataSource = source
    18. Me.ComboBox1.SelectedValue = Test.C3
    19. End Sub
    20. Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
    21. Me.Label1.Text = Me.ComboBox1.SelectedIndex.ToString()
    22. Me.Label2.Text = Me.ComboBox1.SelectedValue.ToString()
    23. Me.Label3.Text = Me.ComboBox1.Text
    24. End Sub
    25. End Class
    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!

    VaporiZed schrieb:

    Willkommen im Forum.

    Wenn Dir die Begriffe nicht passen, leg doch ein eigenes Enum an, bei der die Begriffe heißen, wie Du es willst. Deren Zahlenwerte können doch dann identisch mit dem aus der DateInterval-Enum sein. Noch sehe ich kein Code, bei der…


    Das finde ich übrigens bisher die beste Idee.

    Ich muss zugeben, der "Charakter" eines Enum, und dass ich ein solches sehr einfach selbst erstellen kann, war mir bis dato gar nicht so bewusst.

    Das hat mich erheblich weiter gebracht.

    Danke !!

    modellflugwelt schrieb:

    Das finde ich übrigens bisher die beste Idee.
    Setzt allerdings voraus, dass das Enum in Deinem Projekt editierbar ist.
    Wenn das nicht ist, sehen wir uns bei Post #8 wieder. ;)
    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!