همونطور که میدونید، برای حل مشکل انتخاب و نمایش تاریخ با تقویم فارسی، کنترلهای مختلفی توسط توسعه دهندههای ایرانی برای WinForms ساخته شده. من خیلی از اونها رو بررسی کردم ولی اغلب مشکلات زیادی دارن و حتی اونهای هم که open-source هستن نیاز به کار زیادی برای بهبود دارن. بعضی مشکلاتی که من تا به حال دیدم اینها هستند:
- اختصاصی برای تقویم شمسی؛ این کنترلها مختص تقویم شمسی ایجاد شدن و قابلیت کار با تقویم غیر از شمسی رو ندارن. بنابراین اگه لازم بشه در نرم افزاری تقویم شمسی در کنار تقویم میلادی مورد استفاده قرار بگیره کاربردی ندارن.
- فرمت ثابت؛ این کنترلها اغلب برای فقط دریافت تاریخ، اون هم در فرمت ثابتی مثل yyyy/MM/dd طراحی شدن بنابراین نه تنها امکان دریافت زمان در کنار (و یا بدون) تاریخ فراهم نیست، بلکه فقط قادر هستن تاریخ رو با فرمت ثابت دریافت کنن. برای مثال اگه شما بخواهید کاربر مؤلفه سال رو به صورت دو رقمی، نه چهار رقمی وارد کنه، این کنترلها توانایی مانور در این زمینه رو ندارند.
- عدم پشتیبانی صحیح از کیبرد و موس به صورت کامل و صحیح؛
- واسط کاربری غیر استاندارد؛ همه کنترلهایی که من تا به حال دیدم از واسط کاربری غیر استاندارد رنج میبرن. مشکلاتی از قبیل استفاده از فونت ها و رنگهای خاص و غیر قابل تغییر، اندازههای نامناسب و ثابت و… .
DateTimeSelector
کنترل DateTimeSelector با هدف پشتیبانی کامل از تقویم شمسی و میلادی (و سایر تقویمها، با احتمالا کمی بهبود) نوشته شده و سعی شده که مشکلاتی که در مورد DateTimePicker و همچنین مشکلات نمونههای مشابه ایرانی که بهش اشاره کردم رو نداشته باشه. در واقعه، ویژگیهای این کنترل، نداشتن مشکلاتی هست که بهش اشاره شد:
- پشتیبانی کامل از تقویم شمسی و میلادی (و سایر تقویمها، با احتمالا کمی بهبود)
- پشتیبانی از مقدار null (خالی) برای مقدار
- امکان انتخاب زمان، تاریخ و یا هر دو
- امکان تغییر فونت و جهت (Direction)
- امکان تغییر رنگها
- طراحی گرافیکی منطبق بر Style ویندوز و برنامه
- پشتیبانی مناسب از کیبرد و موس*
- رسم با سرعت بالا بدون Flicker
- open-source و تحت لیسانس MIT
- و…
* در زمینه پشتیبانی کامل از موس و کیبرد کمی جای کار داره
چند Screenshot از این کنترل:
DateTimeSelector-3.pngضمیمه 127867DateTimeSelector-1.png
پروژه در Github
دانلود سورس و یا باینری (DLL) از Github
لینک مطلب کامل در وبلاگ من
* هنوز فرصت به توضیح کامل مشخصات و نحوه استفاده از اون نکردم. سوالاتتون رو میتونید در همین تاپیک یا پست لینک شده در وبلاگ بپرسید.
* ویراست 1.1.2 ارسال شد.