2009-05-15 3 views
0

C#의 FontDialog 클래스에는 사용자가 스크립트 (서양식, 히브리어, 아랍어, 터키어 등)를 선택할 수있는 "AllowScriptChange"속성이 있습니다. 사용 설정되면 드롭 다운 상자는 선택한 글꼴에 따라 사용할 수있는 모든 옵션과 옵션을 제공합니다."byte gdicharset"을 스크립트/언어의 이름으로 변환하는 방법은 무엇입니까?

대화 상자에 성공하면 선택한 글꼴에 GdiCharSet의 값이 0-255로 설정됩니다. 177은 히브리어, 161은 그리스어 등입니다. 값에서 문자열로 변환하는 함수가 있습니까? switch 문을 직접 작성할 수는 있지만 올바른 방법을 원합니다. http://msdn.microsoft.com/en-us/library/cc194829.aspx

편집 : 나는 코드 페이지의 이름을 얻는 것은 쉬운해야한다고 생각하기 때문에, 너무 작동 할 코드 페이지에 캐릭터 세트로 변환하는 함수

이 부분 목록입니다.

답변

4

스위치를 사용하지 않으려면 열거 형을 사용하는 것이 어떻습니까?

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 
    } 

그리고 당신은 그래서 당신과 같이 코드에서 사용할 수 있습니다 .NET 3.5

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

를 사용하는 경우 당신은 확장 메서드를 설정할 수 있습니다 : 뭔가 같은

string name = Font.GdiCharSet.ToGdiName(); 

편집을 : 이제 그것에 대해 생각해 보면 Extension 메서드의 반환 값을 열거 형으로 변경해야합니다.

return (CharSet)GdiCharSet; 

이렇게 비교할 수도 있습니다.

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