دسته بندی مقالات
- بیشتر -محصولات
- بیشتر -آخرین مقالات
- بیشتر --
کنترل pageSetupDialog در سی شارپ
1404/05/03 -
نقش (Role) در Sql Server
1404/05/02 -
کنترل OpenFileDialog در سیشارپ
1404/04/31 -
ایجاد و مدیریت کاربر (User) در Sql Server
1404/04/30 -
کنترل MonthCalendar در سیشارپ
1404/04/29 -
مدیریت کاربران (Users ) در SQL Server
1404/04/28
کنترل MonthCalendar در سیشارپ

مقدمه
در برنامهنویسی ویندوز فرم با زبان سیشارپ (#C)، یکی از نیازهای رایج، گرفتن یا نمایش تاریخ از کاربر به صورت گرافیکی و کاربرپسند است.
کنترل MonthCalendar یکی از ابزارهای پرکاربرد برای این منظور است که به توسعهدهندگان این امکان را میدهد تا انتخاب تاریخ را به سادهترین و زیباترین شکل در فرمهای خود پیادهسازی کنند.
کنترل MonthCalendar چیست؟
MonthCalendar یک کنترل ویندوز فرم (WinForms) در محیط توسعه #C است که به کاربران اجازه میدهد تاریخ یا بازهای از تاریخها را از طریق تقویم گرافیکی انتخاب کنند.
این کنترل از نظر ظاهری شبیه تقویم ماهانه است و تعامل با آن بسیار آسان و شهودی است.
ویژگیهای کلیدی MonthCalendar در #C
-
نمایش تقویم به صورت ماهیانه و قابل پیمایش بین ماهها و سالها
-
قابلیت انتخاب یک یا چند روز (بازه تاریخی)
-
پشتیبانی از تاریخ حداقل و حداکثر (MinDate و MaxDate)
-
نمایش چند ماه در کنار هم (MultiMonth View)
-
تنظیمات پیشرفته برای ظاهر (فونت، رنگ، جهت)
-
پشتیبانی از رویدادهای مهم مانند DateChanged و DateSelected
مزایای استفاده از MonthCalendar در فرمهای ویندوزی
1.کاربرپسند
انتخاب تاریخ به صورت بصری باعث بهبود تجربه کاربری (UX) میشود.
2.کاهش خطا
کاربر به جای تایپ دستی، تاریخ را انتخاب میکند که خطای وارد کردن تاریخ را کاهش میدهد.
3.انعطافپذیر
میتوان بازه انتخابی، تاریخ پیشفرض و محدودیتها را بهراحتی مدیریت کرد.
4.پشتیبانی از چندماه
برای برنامههایی مانند رزرو، گزارشگیری و مدیریت زمان مناسب است.
✅ کاربردهای کنترل MonthCalendar در سیشارپ (#C)
کنترل MonthCalendar نهتنها برای انتخاب تاریخ ساده در فرمها کاربرد دارد، بلکه در سیستمهای پیچیدهتری که نیاز به زمانبندی، گزارشگیری، رزرو، مدیریت رویداد و ثبت زمان دارند نیز قابل استفاده است. در ادامه، کاربردهای اصلی آن را به تفصیل بررسی میکنیم:
1. ثبت تاریخ تولد یا اطلاعات شخصی کاربران
در بسیاری از فرمهای ثبتنام، عضویت، یا ویرایش پروفایل کاربر، نیاز است تاریخ تولد، تاریخ استخدام یا تاریخ ازدواج از کاربر گرفته شود. استفاده از MonthCalendar باعث میشود:
کاربر نیازی به وارد کردن دستی تاریخ نداشته باشد.
فرمت تاریخ بهدرستی رعایت شود (مثلاً yyyy/MM/dd)
خطاهای ورود تاریخ به حداقل برسد.
✅ مثال: فرم ثبتنام کاربر در یک نرمافزار آموزش آنلاین
2. سیستم نوبتدهی و رزرو آنلاین
یکی از رایجترین استفادهها، در سامانههای رزرو وقت (مانند کلینیکها، پزشکان، آرایشگاهها یا خدمات مشاورهای) است. با استفاده از این کنترل:
کاربر روز مناسب را انتخاب میکند.
میتوان روزهای تعطیل یا پر شده را غیرفعال کرد.
بازههای زمانی مجاز برای رزرو را محدود کرد.
✅ مثال: اپلیکیشن نوبتدهی آنلاین برای پزشک یا کلینیک زیبایی
3. گزارشگیری بر اساس بازه زمانی
در سامانههایی مانند حسابداری، مدیریت انبار یا فروش، معمولاً کاربران نیاز دارند گزارشهایی مانند «گزارش فروش بین تاریخ X تا Y» را دریافت کنند. اینجا کنترل MonthCalendar بهخوبی میدرخشد:
دو تقویم برای انتخاب بازه زمانی شروع و پایان
امکان تعیین بیشترین تعداد روز مجاز انتخابی
تعامل با پایگاه داده برای فیلتر گزارشها
✅ مثال: گزارشگیری تراکنشهای مالی یا خرید کاربران
4. یادآوری و مدیریت رویدادها (Event Calendar)
در برنامههایی مثل مدیریت کارها (Task Manager) یا تقویم شخصی، نیاز است کاربر بتواند تاریخ خاصی را برای یادآوری انتخاب کند:
نمایش لیست کارهای مربوط به تاریخ انتخابشده
امکان ثبت یادآوری برای یک تاریخ خاص
استفاده در اپلیکیشنهای مدیریت زمان یا برنامهریزی روزانه
✅ مثال: تقویم یادآوری وظایف برای کارمندان شرکت
5. سیستم حضور و غیاب یا ثبت زمان ورود و خروج
در سازمانها یا مدارس، برای ثبت تاریخ ورود، مرخصی یا غیبت دانشآموز یا کارمند، میتوان از این کنترل استفاده کرد. این قابلیت موجب میشود:
تاریخ دقیق ثبت شود
امکان ثبت مرخصیها در تاریخهای خاص وجود داشته باشد
تاریخ انتخابی در سیستم حضور و غیاب ذخیره شود
✅ مثال: نرمافزار ثبت مرخصی و حضور کارمندان
6. سیستم مدیریت پروژه و زمانبندی فعالیتها
در پروژههای نرمافزاری یا سیستمهای مدیریت پروژه، برای تعیین تاریخ شروع و پایان هر فعالیت یا فاز پروژه از MonthCalendar بهره میگیرند:
انتخاب بازه تاریخی برای فعالیتها
ارتباط بین تاریخ و گانت چارت پروژه
امکان نمایش وضعیت فعالیت در تقویم
✅ مثال: نرمافزار مدیریت پروژه مشابه Trello یا Asana
7. بازیابی دادههای گذشته بر اساس تاریخ
در برخی برنامهها نیاز است کاربر دادههای مربوط به یک روز خاص در گذشته را مشاهده یا بازیابی کند، مثلاً:
سوابق پزشکی یک بیمار
تراکنشهای بانکی یک کاربر
عملکرد یک سیستم در یک روز خاص
✅ مثال: سامانه پیگیری سفارشهای قبلی در فروشگاه آنلاین
8. فیلتر کردن دادهها در جدول یا DataGridView
از MonthCalendar میتوان برای اعمال فیلتر تاریخی روی جداول استفاده کرد:
نمایش سفارشهای یک تاریخ خاص
فیلتر کردن پیامها یا اعلانها
ترکیب با ComboBox یا CheckBox برای فیلتر ترکیبی
✅ مثال: فرم گزارش خرید بر اساس تاریخ و وضعیت سفارش
9. پشتیبانی از تنظیمات سفارشی در محیطهای چندزبانه
در نرمافزارهایی که برای مخاطبین جهانی طراحی شدهاند، میتوان از تنظیمات محلی MonthCalendar استفاده کرد:
تغییر زبان نمایش ماهها و روزها (مثلاً فارسی یا عربی)
تعیین جهت از راست به چپ (RightToLeft)
هماهنگی با تقویمهای بومی (در صورت پیادهسازی سفارشی)
✅ مثال: اپلیکیشن فارسی مدیریت قرار ملاقات با تقویم شمسی
10. برنامهریزی فعالیتهای شخصی در اپلیکیشنهای موبایل و دسکتاپ
گرچه MonthCalendar مخصوص WinForms است و در اپلیکیشن موبایل مستقیم استفاده نمیشود، اما مفهومی مشابه آن در برنامهریزی شخصی نیز پیادهسازی میشود.
با الگوبرداری از آن میتوان:
یک UI تقویممحور طراحی کرد
رویدادها را بهصورت روزانه یا ماهانه مدیریت کرد
✅ مثال: اپلیکیشن دسکتاپ برای برنامهریزی روزانه دانشجویان یا فریلنسرها
مثال عملی کنترل MonthCalendar در سی شارپ : نمایش تاریخ انتخاب شده در Label
در این مثال، ما یک فرم طراحی میکنیم که شامل یک کنترل MonthCalendar و یک Label است. هر بار که کاربر تاریخی را انتخاب کند، تاریخ انتخاب شده در برچسب نمایش داده میشود.
روش اول به صورت کد نویسی انجام میدیم:
using System;
using System.Windows.Forms;
namespace MonthCalendarExample
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
InitializeCustomComponents();
}
private MonthCalendar monthCalendar;
private Label lblSelectedDate;
private void InitializeCustomComponents()
{
// تنظیمات فرم
this.Text = "نمونه استفاده از کنترل MonthCalendar";
this.Size = new System.Drawing.Size(400, 300);
// ایجاد کنترل تقویم
monthCalendar = new MonthCalendar
{
Location = new System.Drawing.Point(20, 20),
MaxSelectionCount = 1, // فقط یک تاریخ انتخاب شود
};
monthCalendar.DateSelected += MonthCalendar_DateSelected;
this.Controls.Add(monthCalendar);
// ایجاد Label برای نمایش تاریخ انتخاب شده
lblSelectedDate = new Label
{
Location = new System.Drawing.Point(20, 200),
AutoSize = true,
Font = new System.Drawing.Font("Tahoma", 10),
Text = "تاریخ انتخاب شده: ---"
};
this.Controls.Add(lblSelectedDate);
}
private void MonthCalendar_DateSelected(object sender, DateRangeEventArgs e)
{
lblSelectedDate.Text = $"تاریخ انتخاب شده: {e.Start.ToShortDateString()}";
}
}
}
آیا به دنبال یک فرصت عالی برای یادگیری برنامهنویسی هستید؟ 🚀
با دوره آموزشی سیشارپ ما، شما میتوانید مهارتهای خود را به سطح جدیدی ارتقا دهید! این دوره بهطور کامل طراحی شده تا به شما کمک کند تا از مبتدی تا پیشرفته در دنیای برنامهنویسی سیشارپ پیش بروید.
👨🏫 چرا دوره ما را انتخاب کنید؟
- محتوای جامع و عملی: با پروژههای واقعی و تمرینات عملی، یادگیری را به تجربهای جذاب تبدیل کنید.
- مدرس مجرب: از تجربه و دانش مدرس حرفهای بهرهمند شوید که شما را در هر مرحله از یادگیری راهنمایی میکنند.
- پشتیبانی ۲۴/۷: هر زمان که سوالی داشتید، ما در کنار شما خواهیم بود تا به شما کمک کنیم.
- دسترسی مادامالعمر: به محتوای دوره دسترسی دائمی داشته باشید و هر زمان که خواستید، میتوانید به آن مراجعه کنید.
💡 فرصت را از دست ندهید!
بایادگیری سیشارپ، میتوانید در دنیای فناوری اطلاعات به یک متخصص تبدیل شوید و در پروژههای جذاب و چالشبرانگیز شرکت کنید.
همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آیندهای روشنتر بردارید!
شرکت در دوره آموزش برنامه نویسی سی شارپ
روش دوم به صورت ویندوز فرم :
ابتدا کنتنرل monthcalendar را روی فرم درگ کرده و طبق فرم زیر صفحه رو طراحی میکنیم.
سپس در رویداد DateSelected کدزیر را مینویسیم .
private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e)
{
lblSelectedDate.Text = e.Start.ToShortDateString() ;
}
حال با انتخاب یک تاریخ ، تاریخ مورد نظر در لیبل نشون میدهد.
نکات قابل توجه هنگام استفاده از MonthCalendar
برای انتخاب چند تاریخ متوالی، مقدار MaxSelectionCount را بیشتر از 1 قرار دهید.
با MinDate و MaxDate میتوانید بازه انتخاب تاریخ را محدود کنید.
رویداد DateSelected زمانی فعال میشود که کاربر با موس تاریخی را انتخاب کند، درحالیکه DateChanged حتی با کلید جهت نیز فعال میشود.
میتوانید تعداد ماههایی که نمایش داده میشود را از طریق CalendarDimensions تعیین کنید.
جمعبندی نهایی کنترل MonthCalendar
کنترل MonthCalendar یکی از کاربردیترین ابزارهای فرمنویسی در محیط Windows Forms است که امکان انتخاب راحت و دقیق تاریخ را به کاربران ارائه میدهد.
با استفاده درست از ویژگیهای این کنترل مانند رویدادهای مربوط به انتخاب تاریخ، محدودسازی بازه زمانی، و نمایش چندماهه، میتوان فرمهایی حرفهای، دقیق و کاربرپسند طراحی کرد.
چه در حال ساخت یک سیستم مدیریت قرار ملاقات باشید یا یک فرم ثبتنام ساده، استفاده از MonthCalendar میتواند تجربه کاربری نرمافزار شما را به سطح بالاتری ارتقا دهد.
دوره های مرتبط

آموزش برنامه نویسی سی شارپ
زبان شی گرایی حرفه ای سی شارپ یک زبان قدرتمند برای طراحی نرم افزار به شمار میرود.