Haben Sie jemals eine solche Ausnahme gesehen?
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)
Diese Ausnahme wird bei der Verwendung des System.Windows.Forms.FontDialog -Komponente ausgelöst und Sie wählen eine ungültige Schriftart aus. Und Sie können nichts dagegen tun, da diese Ausnahme in einer privaten Methode des FontDialog begraben ist und nicht behandelt wird.
Da der Fehler seit Jahren da ist, ohne behoben zu werden, und angesichts der Tatsache, dass Windows -Formulare für Microsoft die Liste der Prioritäten für Microsoft nicht genau stehen, wird ich vermute, dass er niemals behoben wird. Dies ist ein Rad, das ich lieber nicht neu erfinden würde, aber ... hier ist es sowieso.
Ich habe es nicht geschafft, eine Schriftart zu finden, die diese Art von Absturz verursacht, obwohl ich einige automatisierte Fehlerberichte von Benutzern habe, die sie erleben. Wenn Sie eine solche Schriftart kennen, die zum Download verfügbar ist, lassen Sie es mich bitte wissen, damit ich dies selbst testen kann. Ich gehe davon aus, dass meine Version das Problem behebt, aber an diesem Punkt weiß ich es nicht sicher.
Die Cyotek.Windows.Forms.FontDialog -Komponente ist ein Rückgang des Ersatzes für das ursprüngliche System.Windows.Forms.FontDialog , jedoch ohne den Absturz, der bei der Auswahl einer Schriftart von Nicht-PRUE-Typ auftritt.
Diese Version verwendet das native Win32 -Dialog über ChooseFont - die Hook -Prozedur, um das Apply zu verarbeiten und das Farbkombinations -Combobox zu verbergen, wurde direkt aus der ursprünglichen verwalteten Komponente genommen.
In einem der Zweige dieses Repositorys gibt es auch eine vollständig verwaltete Lösung. Es ist unvollständig, vor allem, weil ich nicht in der Lage war, zu bestimmen, welche Schriftarten durch Einstellungen versteckt sind und wie Familien mit nicht Standardstilen wie Licht kombiniert werden. Es ist immer noch interessant, wie man EnumFontFamiliesEx usw. verwendet, aber im Moment ist es als laufendes Werk in der Warteschleife.
Ein Nuget -Paket ist verfügbar.
PM> Installationspaket Cyotek.windows.formals.fontdialog
Die FontDialog -Komponente ist unter der MIT -Lizenz lizenziert. Siehe LICENSE.txt für den vollständigen Text.
Weitere Informationen zu dieser Kontrolle finden Sie in den mit Fontdialog markierten Artikeln unter cyotek.com.