이런 예외를 본 적이 있습니까?
System.ArgumentException: Only TrueType fonts are supported. This is not a TrueType font.
at System.Drawing.Font.FromLogFont(Object lf, IntPtr hdc)
at System.Windows.Forms.FontDialog.UpdateFont(LOGFONT lf)
at System.Windows.Forms.FontDialog.RunDialog(IntPtr hWndOwner)
at System.Windows.Forms.CommonDialog.ShowDialog(IWin32Window owner)
이 예외는 System.Windows.Forms.FontDialog 구성 요소를 사용할 때 발생하며 잘못된 글꼴을 선택합니다. 그리고이 예외는 FontDialog 의 개인 방법에 묻혀 있고 처리되지 않기 때문에 그것에 대해 할 수 없습니다.
버그가 수년 동안 고정되지 않고 몇 년 동안 있었기 때문에 Microsoft의 우선 순위 목록에서 Windows 형태가 정확히 높지 않다는 사실을 감안할 때 결코 수정되지 않을 것 같습니다. 이것은 내가 재발 명하는 것을 선호하는 하나의 바퀴이지만 ... 여기는 어쨌든 있습니다.
실제로 이러한 유형의 충돌을 일으키는 글꼴을 찾지 못했지만 경험이있는 사용자의 자동화 된 오류 보고서가 많이 있습니다. 다운로드 할 수있는 글꼴을 알고 있다면 직접 테스트 할 수 있도록 알려주십시오. 내 버전이 문제를 해결한다고 가정하지만이 시점에서 나는 실제로 확실하지 않습니다.
Cyotek.Windows.Forms.FontDialog 구성 요소는 원본 System.Windows.Forms.FontDialog 대체하는 것이 삭제되어 트루 유형 글꼴을 선택할 때 발생하는 충돌이 없지만 충돌이 발생하지 않습니다.
이 버전은 Apply 이벤트를 처리하기위한 ChooseFont 절차를 통한 원본 Win32 대화 상자를 사용하고 원래 관리 구성 요소에서 직접 콤보 박스를 숨겼습니다.
이 저장소의 지점 중 하나에 묻힌 완전히 관리되는 솔루션도 있습니다. 주로 설정에 의해 숨겨져있는 글꼴을 결정할 수 없었기 때문에 불완전합니다. 가족과 빛과 같은 비 표준 스타일을 결합하는 방법. EnumFontFamiliesEx 등을 사용하는 방법을 보여주는 것은 여전히 흥미롭지 만 현재는 진행중인 작업으로 보류 중입니다.
Nuget 패키지를 사용할 수 있습니다.
PM> 설치 패키지 cyotek.windows.forms.fontdialog
FontDialog 구성 요소는 MIT 라이센스에 따라 라이센스가 부여됩니다. 전체 텍스트는 LICENSE.txt 참조하십시오.
이 컨트롤에 대한 자세한 내용은 cyotek.com에서 fontdialog로 태그 된 기사를 참조하십시오.