Вы когда -нибудь видели подобное исключение?
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 и не обрабатывается.
Поскольку ошибка была там годами, не была исправлена, и, учитывая тот факт, что формы Windows не совсем высокий в списке приоритетов для Microsoft, я подозреваю, что она никогда не будет исправлена. Это одно колесо, которое бы я предпочел не изобретать, но ... вот оно в любом случае.
Мне на самом деле не удалось найти шрифт, который вызывает этот тип сбоя, хотя у меня есть немало автоматических отчетов об ошибках от пользователей, которые испытывают его. Если вы знаете о таком шрифте, который доступен для загрузки, пожалуйста, дайте мне знать, чтобы я мог проверить это сам. Я предполагаю, что моя версия решает проблему, но на данный момент я на самом деле не знаю наверняка.
Компонент Cyotek.Windows.Forms.FontDialog -это снижение замены для исходной System.Windows.Forms.FontDialog Windows.forms.fontdialog, но без сбоя, возникающего при выборе шрифта без поставки типа.
В этой версии используется нативный диалог win32 через ChooseFont - процедура крюка для обработки события Apply и скрытия цветового ComboBox была взята непосредственно из оригинального управляемого компонента.
В одной из ветвей этого хранилища также есть полностью управляемое решение. Это неполно, главным образом потому, что я не смог определить, какие шрифты скрыты путем настройки, и как объединить семьи с нестандартными стилями, такими как свет. Он по -прежнему интересен сам по себе, показывая, как использовать EnumFontFamiliesEx и т. Д., Но сейчас он приостановлен как работа.
Доступен пакет Nuget.
PM> Install-Package cyotek.windows.forms.fontdialog
Компонент FontDialog лицензирован по лицензии MIT. См. LICENSE.txt для полного текста.
Для получения дополнительной информации об этом контроле см. Статьи, помеченные Fontdialog на cyotek.com.