Pernahkah Anda melihat pengecualian seperti ini?
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)
Pengecualian ini dilemparkan saat menggunakan komponen System.Windows.Forms.FontDialog dan Anda memilih font yang tidak valid. Dan Anda tidak dapat melakukan apa pun tentang hal itu, karena pengecualian ini dikubur dalam metode pribadi FontDialog dan tidak ditangani.
Karena bug telah ada di sana selama bertahun -tahun tanpa diperbaiki, dan mengingat fakta bahwa Windows Forms tidak persis tinggi dalam daftar prioritas untuk Microsoft, saya curiga itu tidak akan pernah diperbaiki. Ini adalah satu roda saya lebih suka untuk tidak menemukan kembali, tapi ... ini dia.
Saya belum benar -benar berhasil menemukan font yang menyebabkan jenis kecelakaan ini, meskipun saya memiliki beberapa laporan kesalahan otomatis dari pengguna yang mengalaminya. Jika Anda tahu font yang tersedia untuk diunduh, beri tahu saya agar saya dapat mengujinya sendiri. Saya menganggap versi saya memperbaiki masalah tetapi pada titik ini saya tidak benar -benar tahu pasti.
Komponen Cyotek.Windows.Forms.FontDialog adalah penurunan penggantian untuk System.Windows.Forms.FontDialog asli.windows.forms.fontdialog, tetapi tanpa crash yang terjadi saat memilih font tipe yang tidak benar.
Versi ini menggunakan dialog Win32 asli melalui ChooseFont - prosedur pengait untuk menangani acara Apply dan menyembunyikan warna ComboBox telah diambil langsung dari komponen yang dikelola asli.
Ada juga solusi yang dikelola sepenuhnya terkubur di salah satu cabang repositori ini. Ini tidak lengkap, terutama karena saya tidak dapat menentukan font mana yang disembunyikan oleh pengaturan, dan cara menggabungkan keluarga dengan gaya non standar seperti cahaya. Ini masih menarik dalam dirinya sendiri, menunjukkan cara menggunakan EnumFontFamiliesEx dll, tetapi untuk saat ini ditahan sebagai pekerjaan yang sedang berlangsung.
Paket Nuget tersedia.
PM> install-package cyotek.windows.forms.fontdialog
Komponen FontDialog dilisensikan di bawah lisensi MIT. Lihat LICENSE.txt untuk teks lengkapnya.
Untuk informasi lebih lanjut tentang kontrol ini, lihat artikel yang ditandai dengan FontDialog di cyotek.com.