문제

모든 시간을 내가 만드는 새로운 형태로서 응용 프로그램에서 사용하는"Microsoft San Serif,8.25pt"font 기본적으로 합니다.나는 그것을 변경하고있다는 것을 알고 있기 때문에 이 경우 내 양식 선택 최상의 기본 글꼴을에 대한 시스템입니다.그러나,실행할 때 응용 프로그램을 사용하는 글꼴은 여전히 아무것도 하지만 맑은 고딕(기본 시스템에서 글꼴 내 Windows Vista OS).

그 이유는 무엇입니까?도록 하려면 어떻게 해야 하는 응용 프로그램은 다음과 같습니는 일반 윈도우 응용 프로그램?

도움이 되었습니까?

해결책

체크 아웃 블로그 항목에 이야기에 대해서 기본 글꼴 형태로 이끌어 내는 문제가 발생하고 이 Connect 버그 마이크로소프트의 반응이다.즉 그것은 단지 양식지 않을 얻을(정확한)windows 기본 글꼴(변경).

다른 팁

허용에 대답하지 않은 질문에 대답;그것은 단지 이유를 설명 이 문제가 발생합니다.

의 일부 다른 대답이 제안 단단한 해결 방법,그러나 내가 찾는 것은 정말 최고의 솔루션은 기반을 만드는 형태로 모든 형태에서 응용 프로그램에서 상속되고 설정된 이 기본 형태의 글꼴 속성 SystemFonts.MessageBoxFont 에서 생성자입니다.이 뿐만 아니라는 것을 보장 응용 프로그램을 선택한 올바른 글꼴은 실행 시간에 따라 사용자 환경(향하고 잠재적인 문제로 인한 한스 전달—XP 없이 Office2007 에서는 리조트에는 Microsoft San Serif 에서 부재의 맑은 고딕)지만,또한 당신 디자인-time 에 대한 지원이 당신의 현재 Windows 글꼴입니다.를 사용하여 올바른 글꼴에서 디자인은 시간 문제를 해결합 Josuegomes 포인트이기 때문에,어떤 컨테이너 제어 만들어진 양식에서 선택할 것입 글꼴을 사용하는 형태로 디자인이다.

상기 이외의 장점을 이렇게 하면 기억하지 생성자 수정을 위한 각각의 형태를 만드는 것을 보장 전체에 걸쳐 일관의 형태는 모두 응용 프로그램을 제공뿐만 아니라 당신은 장소를 넣어 기타 일반적인 기능이 있습니다.내가 사용하는 이 커플에서 다음과 같은 여러 가지 방법으로 p/를 호출하여,등등.버그를 수정하에서 WinForms 구현합니다.

만 문제는 남아있으로 이 방법을 설정할 경우 글꼴 스타일을 특정 제어,같은 굵게 표시합니다.최고의 장소를 이전에서는 형태의 생성을 시작으로 형태의 글꼴을 기본으로 수정하는 스타일에서 그것:

myControl.Font = New Font(Me.Font, FontStyle.Bold)

추가할 수 있습니다 전에 InitializeComponent()형태로 생성자를(s):

this.Font = SystemFonts.MessageBoxFont;

이 나타날로 작업하 Windows XP,Windows Vista.

네,그것이 사용하는 반환된 글꼴 GetStockObject(DEFAULT_GUI_FONT).는 MS San Serif.오래된 글꼴,길에서 가장 기계입니다.글꼴 mapper 다,놀람,Microsoft San Serif.

이 없는 문서화 절차를 알고 나의 변화하는 기본 글꼴,SDK 문서 언급 MS San Serif 명시적으로 합니다.하려는 경우 맑은 고딕,당신은 그것을 부탁드립니다.지 않는 안전하기는 여전히 많은 XP 기계 밖에 없는 Office2007.글꼴 mapper 번역할 것입니다 그것은 기계에 있지 않는 맑은 고딕에서 사용할 수 있다.지 나오지 않는 이러한 기계 왼쪽 더 이상입니다.

설정하는 형태의 글꼴 속성을 SystemFonts.DialogFont 작동하지 않는 경우에 당신은 그룹 상자와 관련된 제어합니다.컨트롤 그룹 내부자에 의해 영향을 받지 않 형태의 글꼴을 제공합니다.나는 해결""설정하여 이 글꼴 속성을 SystemFonts.DialogFont 에 대한 각 그룹 상자입니다.

컨트롤 그룹 내부자는 참으로의 영향을 받지 않 형태의 글꼴을 제공합니다.그 이유는 제어하는 컨테이너에트로 취급의 어린이는 컨테이너 컨트롤 다음과 같 상자이지만,아이들이 주인공의 형태입니다.에서 순서에 대한 모든 컨트롤을 비롯한 그룹 상자 규모가 제대로 사용할 수 있는 아래와 유사한 코드:

        foreach (Control ctr in this.Controls)
        {
            ctr.Font = SystemFonts.IconTitleFont;

            // controls in groupboxes are not child of main form
            if (ctr.HasChildren)
            {
                foreach (Control childControl in ctr.Controls)
                {
                    childControl.Font = SystemFonts.IconTitleFont;
                }
            }        
        }

이를 클릭하 폼 및 변경에 대한 글꼴 크기를 들어 내가 변경된 글꼴 크기의 양식을 12pt 테스트는 드래그하여 텍스트 상자를 형태입니다.당신이 볼 수,텍스트 크기 변경 12pt 니다.나는 이 솔루션은 사고에 의하여.

Control.DefaultFont 가 ReadOnly;한 해키었을 덮어 그것을 사용하는 것이다.

Type settingsType = typeof(Control);
var defaultFontField = settingsType.GetField("defaultFont", BindingFlags.Static | BindingFlags.NonPublic);
defaultFontField.SetValue(null, new Font("Segoe UI", 8.25F));

해야 UT 에 눈을 유지하는 이 코드가 없 API 계약 당신을 보호하기 위해 경우에는 Framework 구현을 변경합니다.

또한 형태의 디자이너는 대부분의 시간이 삽입 글꼴을 그대로습니다.디자이너 클래스입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top