• 1405/03/15

تمرین جلسه 40 - تبدیل تاریخ :

با سلام

یک کلاس ایجاد کردم با پراپرتی های Day از نوع int و MounthName از نوع استرینگ برای نگهداری نام ماه و Year  از نوع int و IsOk از نوع Boolian برای اینکه اگر تمام کنترلها در سطخ کلاس درست بودند آن وقت در سمت فرم پیام مناسب چاپ شود.

مقادیر را از فرم به پراپرتی ها پاس دادم و پس از کنترل مقدار آنها در کلاس پراپرتی IsOk را برابر True کردم و از فرم مجدد مقادیر را بازخوانی کردم.

در کنترل های پراپرتی ها در سطح کلاس یک متد برای تبدیل عدد ماه به نام آن تعریف کردم و بر اساس عدد ماه کنترل کردم برای ماههای کمتر از 7 مقدار روز بین 1 تا 31 باشد و فقط ماههای بین 7 تا 12 بتوانند روزهای بین 1 تا 30 را قبول کنند. همچنین خود ماه نیز بین 1 تا 12 کنترل شود . برای سال هم بازه 1300 تا 1405 در نظر گرفته شد.

کلاس در نظر گرفته شده:

namespace Practice_Lessone40_ConvertDay
{
    class ConvertDay
    {
        public int Day { get; set; }
        public string MounthName { get; set; }
        public int Year { get; set; }
        public bool IsOk { get; set; }

        public ConvertDay(int day, int mounth, int year)
        {
            IsOk = false;
            FindMounthName(mounth);
            if (CheckDayMounth(day, mounth) && CheckYear(year))
            {
                IsOk = true;
            }
            else
            {
                IsOk = false;
            }
        }

        private bool CheckDayMounth(int day, int mounth)
        {
            if (mounth > 0 &amp;&amp; mounth < 7)
            {
                if ((day < 1 || day > 31))
                {
                    MessageBox.Show("لطفا روز را در بازه 1 تا 31 انتخاب کنید.");
                    return false;
                }
                else
                {
                    Day = day;
                    return true;
                }
            }
            else if (mounth > 6 &amp;&amp; mounth < 13)
            {
                if ((day < 1 || day > 30))
                {
                    MessageBox.Show("لطفا روز را در بازه 1 تا 30 انتخاب کنید.");
                    return false;
                }
                else
                {
                    Day = day;
                    return true;
                }
            }
            else
            {
                MessageBox.Show("لطفا ماه را بین 1 و 12 انتخاب نمائید.");
                return false;
            }
        }

        private bool CheckYear(int year)
        {
            if (year > 1405 || year < 1300)
            {
                MessageBox.Show("لطفا سال را بین 1300 و 1405 انتخاب نمائید.");
                return false;
            }
            else
            {
                Year = year;
                return true;
            }
        }


        private void FindMounthName(int mounth)
        {
            switch (mounth)
            {
                case 1:
                    MounthName = "فروردین";
                    break;
                case 2:
                    MounthName = "اردیبهشت";
                    break;
                case 3:
                    MounthName = "خرداد";
                    break;
                case 4:
                    MounthName = "تیر";
                    break;
                case 5:
                    MounthName = "مرداد";
                    break;
                case 6:
                    MounthName = "شهریور";
                    break;
                case 7:
                    MounthName = "مهر";
                    break;
                case 8:
                    MounthName = "آبان";
                    break;
                case 9:
                    MounthName = "آذر";
                    break;
                case 10:
                    MounthName = "دی";
                    break;
                case 11:
                    MounthName = "بهمن";
                    break;
                case 12:
                    MounthName = "اسفند";
                    break;
            }
        }
    }
}

در فرم هم متدی برای کنترل اینکه در تکست باکس ها فقط عدد نوشته شود قراردادم

کدهای فرم:

namespace Practice_Lessone40_ConvertDay
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            int day = Convert.ToInt32(txtDay.Text);
            int mounth = Convert.ToInt32(txtMounth.Text);
            int year = Convert.ToInt32(txtYear.Text);
            ConvertDay cd = new(day, mounth, year);
            if (cd.IsOk)
            {
                lblResult.Text = $"تاریخ انتخابی شما :\r روز {cd.Day} ماه {cd.MounthName} سال {cd.Year} می باشد.";
            }
            else
            {
                lblResult.Text = "";
            }
        }

        private bool CheckNumber(string number)
        {
            try
            {
                if (number != "")
                {
                    int a = Convert.ToInt32(number);
                }
                return true;
            }
            catch
            {
                MessageBox.Show("لطفا فقط عدد وارد نمائید.");
                return false;
            }
        }

        private void txtDay_TextChanged(object sender, EventArgs e)
        {
            if (!CheckNumber(txtDay.Text))
            {
                txtDay.Text = "";
            }
        }

        private void txtMounth_TextChanged(object sender, EventArgs e)
        {
            if (!CheckNumber(txtMounth.Text))
            {
                txtMounth.Text = "";
            }
        }

        private void txtYear_TextChanged(object sender, EventArgs e)
        {
            if (!CheckNumber(txtYear.Text))
            {
                txtYear.Text = "";
            }
        }


    }
}

 

چند عکس از پروژه: