مسیج باکس فارسی در Windows Forms و WPF تحت .Net Core
صورت مسئله:
قدیم ها وقتی تو .Net Framework برنامه های دسکتاپ می نوشتیم برای نمایش پیام های فارسی بجای MessageBox.Show از یک کلاس معادل بنام RtlMessageBox (که نمی دونم کی ساخته بودش، از اینترنت پیدا کرده بودم) استفاده می کردم.
اخیرا سعی کردم تو یک پروژه WPF تحت .Net Core از اون کلاس استفاده کنم، اما متوجه شدم بخاطر عوض شدن مکانیسم های Hook در دات نت کور پیام های دکمه های Yes و No و OK و ... دیگه فارسی نمیشه، همچنین اون کلاس بخاطر استفاده از API های قدیمی ویندوز، تو Windows 10 و 11 همچنان دیالوگ رو با استفاده از تم قدیمی ویندوز (شبیه ویندوز 2000) نشون میده.
راه حل:
برای حل مشکلات فوق برای نوشتن ورژن سازگار با ویندوزهای جدید و سازگاری کامل با دات نت کور کلاس فوق اقدام کردم. نتیجه کار شد یک ورژن جدید از RtlMessageBox که قابلیت های زیر رو داره:
• سازگاری کامل با نحوه فراخوانی MessageBox.Show ، بنابراین کافیه تو کل برنامه تون عبارت MessageBox رو با RtlMessageBox جستجو و جایگزین کنید.
• امکان مشخص کردن فونت سفارشی فارسی و مشخص کردن سایز فونت. این فونت در دکمه ها و متن پیام استفاده خواهد شد. این قابلیت در کلاس اصلی MessageBox وجود نداره.
• امکان مشخص کردن عنوان دلخواه برای دکمه های دیالوگ باکس.
• نمایش راست به چپ دیالوگ بدون بی ریخت به نظر رسیدن رابط کاربری.
• اعمال شدن خودکار Theme برنامه روی دیالوگ باکس در WPF.
• استفاده از آیکون های مدرن ویندوز.
• قابل استفاده در دات نت کور ورژن 6 تا 9.
نکات:
• ورژن قابل استفاده در Windows Forms و WPF بصورت جداگانه موجود است.
• پکیج های Nuget این کتابخانه ها موجود است (کافیه تو Nuget تو ویژوال استودیو عبارت Barnamenevis.Net.RtlMessageBox رو جستجو کنید). پکیج های برای دات نت کور 6 تا 9 موجوده، پشتیبانی از دات نت کور 10 هم بعد از انتشارش اضافه خواهد شد.
• راهنمای کامل استفاده در صفحه گیت هاب و پروژه های دمو موجود است.
آدرس ریپو در گیت هاب:
https://github.com/delphiassistant/Barnamenevis.Net.Tools
آدرس پکیج نوگت برای WPF:
https://www.nuget.org/packages/Barnamenevis.Net.RtlMessageBox.Wpf
آدرس پکیج نوگت برای Windows Forms:
https://www.nuget.org/packages/Barnamenevis.Net.RtlMessageBox.WindowsForms
خوشحال می شوم نظرات تون درباره این مطلب رو بشنوم. اگر هم مشکلی در عملکرد اینها مشاهده کردید یا درخواست افزودن قابلیت به این کتابخانه ها دارید اطلاع دهید.
Post #301
894