هل سبق لك أن رأيت استثناءً من هذا القبيل؟
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 Forms ليست عالية تمامًا في قائمة الأولويات لـ Microsoft ، أعتقد أنه لن يتم إصلاحه أبدًا. هذه عجلة واحدة أفضل عدم إعادة اختراعها ، ولكن ... هنا على أي حال.
لم أتمكن بالفعل من العثور على خط يسبب هذا النوع من التعطل ، على الرغم من أن لدي بعض تقارير الأخطاء الآلية من المستخدمين الذين يختبرونه. إذا كنت تعرف مثل هذا الخط المتاح للتنزيل ، فيرجى إخبارنا حتى أتمكن من اختبار هذا بنفسي. أفترض أن نسختي تعمل على إصلاح المشكلة ولكن في هذه المرحلة لا أعرف فعليًا بالتأكيد.
Cyotek.Windows.Forms.FontDialog مكون هو انخفاض في الاستبدال System.Windows.Forms.FontDialog الأصلي.
يستخدم هذا الإصدار مربع حوار WIN32 الأصلي عبر ChooseFont - إجراء الخطاف للتعامل مع حدث Apply واختباء Color Combobox مباشرة من المكون المدار الأصلي.
هناك أيضًا حل مُدار بالكامل مدفون في أحد فروع هذا المستودع. إنه غير مكتمل ، ويرجع ذلك أساسًا إلى أنني لم أتمكن من تحديد الخطوط التي يتم إخفاؤها بواسطة الإعدادات ، وكيفية الجمع بين العائلات والأنماط غير القياسية مثل الضوء. لا يزال الأمر مثيرًا للاهتمام في حد ذاته ، حيث يوضح كيفية استخدام EnumFontFamiliesEx وما إلى ذلك ، ولكن في الوقت الحالي ، يتم تعليقه كعمل مستمر.
حزمة nuget متوفرة.
PM> تثبيت package cyotek.windows.forms.fontdialog
يتم ترخيص مكون FontDialog بموجب ترخيص MIT. انظر LICENSE.txt للحصول على النص الكامل.
لمزيد من المعلومات حول هذا التحكم ، راجع المقالات الموسومة مع fontdialog في cyotek.com.