EN - kein String to Font!

  • VB.NET
  • .NET (FX) 4.0

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Cheffboss.

    EN - kein String to Font!

    Moin! :)
    Ich habe vor einen String in eine Font umzuwandeln.
    Wenn das Programm mit Deutscher-Einstellung läuft, geht es
    Fehlerfrei.
    Aber wenn ich jetzt Englisch eingestellt habe, kommt eine Fehlermeldung!
    Diese aber nicht bei allen Schriftarten erscheint.
    Ich könnte es nun so lösen, dass wenn diese verbotene Schriftart eingestellt ist, das Programm eine Warnung ausgibt und die Prozedur verlässt.
    Dies wäre meine Alternative, aber am besten wäre es, wenn die Schriftart einfach eingestellt wird.
    Wäre für jeden Tipp dankbar.
    BIG THX

    VB.NET-Quellcode

    1. Public Sub New()
    2. My.Application.ChangeUICulture("en")
    3. My.Application.ChangeCulture("en-US")
    4. ' The Me.InitializeComponent call is required for Windows Forms designer support.
    5. Me.InitializeComponent()
    6. End Sub
    7. Public Function TesteOb(text1 As String) As Boolean
    8. Dim tc As TypeConverter
    9. tc = TypeDescriptor.GetConverter(GetType(System.Drawing.Font))
    10. Dim newFont As Font
    11. Try
    12. newFont = CType(tc.ConvertFromString(text1), Font)
    13. Return True
    14. Catch ex As Exception
    15. MsgBox(ex.Message)
    16. Return False
    17. End Try
    18. End Function
    19. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    20. If TesteOb("Microsoft YaHei; 21,75; style=Italic; Underline, Strikeout") Then
    21. MsgBox("Ok")
    22. Else
    23. MsgBox("fehler")
    24. End If
    25. End Sub

    System.ArgumentException
    HResult=0x80070057
    Nachricht = Text "Microsoft YaHei; 21,75; style=Italic; Underline, Strikeout" cannot be parsed. The expected text format is "name, size[units[, style=style1[, style2, ...]]]".


    edit1:
    Wenn ich vom String style=Italic; Underline, Strikeout weg mache, geht es. Aber diese Werte sind doch auch Wichtig!

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. If TesteOb("Microsoft YaHei; 21,75") Then
    3. MsgBox("Ok")
    4. Else
    5. MsgBox("fehler")
    6. End If
    7. End Sub

    Visual Basic.NET 8o
    MS-SQL
    8o

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

    Cheffboss schrieb:

    Aber wenn ich jetzt Englisch eingestellt habe, kommt eine Fehlermeldung!
    Ich denke mal, dass der FontSize in Englischen mit nem Punkt geschrieben wird:

    VB.NET-Quellcode

    1. If TesteOb("Microsoft YaHei; 21.75; style=Italic; Underline, Strikeout") Then
    Am besten Du erstellst ein Culture-Objekt und formatierst mit dieser Kultur den numerischen Wert entsprechend.
    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!
    @Cheffboss FGibt es so was wie Font.ToString(), wo genau dieser String rauskommt?
    Dann hole Dir den mal mit der englischen Kultur.
    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!
    Kurze Frage: Sicher das das vorher funktionierte? In deinem Code mischst du Komma und Semikolon ...

    Unabhängig davon, in der Fehlermeldung steht das Format: name, size[units[, style=style1[, style2, ...]]]
    @an alle
    Danke an euch.
    Ich habe das Problem nun simpel gelöst.
    Beide Programme laufen auf Deutsch, und das Plugin zeigt den Zeitwert als PM/AM an.
    Ohne das es nun Englische Einstellungen sind!
    Visual Basic.NET 8o
    MS-SQL
    8o