2009-05-15 3 views
0

Die FontDialog-Klasse in C# hat eine Eigenschaft "AllowScriptChange", mit der der Benutzer das Skript auswählen kann (Western, Hebräisch, Arabisch, Türkisch usw.). Wenn diese Option aktiviert ist, bietet die Dropdown-Box alle diese Optionen und alles, was sonst noch verfügbar ist, abhängig von der ausgewählten Schriftart.Wie konvertiere ich "byte gdicharset" in den Namen des Skripts/der Sprache?

Wenn der Dialog erfolgreich ist, hat die ausgewählte Schriftart GdiCharSet einen Wert von 0-255 gesetzt. 177 ist hebräisch, 161 ist griechisch usw. Gibt es eine Funktion, die vom Wert in einen String konvertiert? Ich kann selbst eine Switch-Anweisung schreiben, aber ich würde es gerne The Right Way machen.

Dies ist eine unvollständige Liste: http://msdn.microsoft.com/en-us/library/cc194829.aspx

bearbeiten: Eine Funktion, die von CharSet zu Codepage konvertiert auch funktionieren würde, weil ich denke, dass der Name einer Codepage immer einfach sein sollte.

Antwort

4

Wenn Sie keinen Schalter verwenden möchten, wie wäre es mit einer Enum? Etwas wie:

public enum CharSet : byte 
{ 
     ANSI_CHARSET = 0, 
     DEFAULT_CHARSET = 1, 
     SYMBOL_CHARSET = 2, 
     SHIFTJIS_CHARSET = 128, 
     HANGEUL_CHARSET = 129, 
     HANGUL_CHARSET = 129, 
     GB2312_CHARSET = 134, 
     CHINESEBIG5_CHARSET = 136, 
     OEM_CHARSET = 255, 
     JOHAB_CHARSET = 130, 
     HEBREW_CHARSET = 177, 
     ARABIC_CHARSET = 178, 
     GREEK_CHARSET = 161, 
     TURKISH_CHARSET = 162, 
     VIETNAMESE_CHARSET = 163, 
     THAI_CHARSET = 222, 
     EASTEUROPE_CHARSET = 238, 
     RUSSIAN_CHARSET = 204 
    } 

Und Sie können eine Erweiterungsmethode einrichten, wenn Ihre .NET 3.5

mit
public static class GdiCharHelper 
{ 
    public static string ToGdiName(this byte GdiCharSet) 
    { 
      return Enum.GetName(typeof(CharSet), GdiCharSet); 
    } 
} 

So können Sie es in Ihrem Code verwenden, wie so:

string name = Font.GdiCharSet.ToGdiName(); 

EDIT : Nun, da ich darüber nachdenke, sollten Sie wahrscheinlich den Rückgabewert der Extension-Methode als Enum ändern, also:

return (CharSet)GdiCharSet; 

Auf diese Weise können Sie auch vergleichen:

If (Font.GdiCharSet.ToCharSet() == CharSet.ANSI_CHARSET) {...} 
Verwandte Themen