WinForms in .NET 7: keine Unicode-Zeichen bei eigener Startroutine

  • VB.NET
  • .NET 7–8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von -Franky-.

    WinForms in .NET 7: keine Unicode-Zeichen bei eigener Startroutine

    Hallo zusammen.

    Ich steh grad auf'm Schlauch. Ich habe eine .NET 7-WinForms-App, darin das Anwendungsframework deaktiviert, in der vbproj-Datei festgelegt, dass die Sub Main das Startobjekt sein soll und folgenden Code:

    VB.NET-Quellcode

    1. Module Main
    2. Sub Main()
    3. Application.SetCompatibleTextRenderingDefault(True)
    4. Application.EnableVisualStyles()
    5. Application.Run(New FrmMain)
    6. End Sub
    7. End Module

    Im Designer werden Unicode-Zeichen korrekt angezeigt. Aber zur Laufzeit werden diese nicht korrekt dargestellt, da kommt nur ein Rechteck/Platzhalter statt der Lupe:

    Welcher Befehl fehlt?

    Wobei ich bei Beispielerstellung grad sehe, dass das mit den VisualStyles grad auch nicht klappt 8|
    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.
    Könnte an der Schriftart liegen - oder möglicherweise liegt das daran, dass C# intern UTF-16 statt UTF-8 verwendet. Die ähneln sich sehr, aber manchmal unterscheiden die sich voneinander.

    Kannst du für deine Form die Schriftart wechseln und das mal probieren?
    Quellcode lizensiert unter CC by SA 2.0 (Creative Commons Share-Alike)

    Meine Firma: Procyon Systems
    Meine Privatwebseite: SimonC.eu

    Bitte nicht wundern, wenn meine Aktivitäten im Forum etwas langsamer sind, ich baue gerade mein Nebengewerbe zum Vollgewerbe aus.
    Ich versuche auf euch zurückzukommen :)
    Hm, ich merke gerade, dass das keine Spezialität von .NET 7 ist. In .NET Framework 4.8 geht es auch nicht (mehr?). Zwar geht es dort mit den VisualStyles, aber die Unicodelupe wird mit eigener Startroutine auch nicht richtig angezeigt. Mit beiden Unterbauten (.NET 7, .NET Framework 4.8) klappt es, wenn ich dass ApplicationFramework in den Projekteinstellungen aktiviere und das Hauptform als Startobjekt setze.
    Das mit den Schriftarten hab ich jetzt auch mal probiert: Microsoft Sans MS, Segoe UI, Cambria, Calibri, Times New Roman. Ohne Besserung.

    ##########

    Scheint wohl daran zu liegen, dass ich Application.SetCompatibleTextRenderingDefault(False) nutzen muss. Aber das klappt erstmal nur auf einer anderen Maschine mit VS 17.9.0 und NetFx. In der anderen Testumgebung prüf ich es später.

    ##########

    Das Thema ist erledigt, es lag tatsächlich nur an dem Application.SetCompatibleTextRenderingDefault(). Mit False als Parameter klappt alles.
    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.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VaporiZed“ ()

    Es waere super-hilfreich, wenn du dein Anwendungsbeispiel als Issue im WinForms Repo melden wuerdest!
    Ich sehe in Sachen "Unicode und moderne Fonts" einen Alptraum auf uns zukommen, deswegen pushe ich intern zur Adaption fuer Direct2D/DirectWrite in WinForms fuer zumindest einige performance- oder A11Y-kritische Issues. Je mehr Feedback aus dieser Richtung von der Community kommt, desto besser!