دسته بندی ها
17:44 1398/11/08

FormatString برای ورود تاریخ شمسی

مشخصات سوال کننده :
کاربر : Nori     امتیاز کاربر : 72     رتبه کاربر : 15
دسته بندی : WPF

به این سوال امتیاز بدهید    1
تعداد بازدید این سوال : 4382
پاسخ دهنده : Sowgandi 19:25 1398/11/08

سلام دوست گرامی.

ابتدا در بدنه فرم خود کد زیر رو قرار بدید.

      private string FormatStringDate(int date)
        {
            string text = textBox.Text.Trim();
            if (text.Length != 8) { textBox.Clear(); return ""; }
            if (Convert.ToInt32(text.Substring(4, 2)) > 12 || Convert.ToInt32(text.Substring(4, 2)) < 1) { textBox.Clear(); return ""; }
            if (Convert.ToInt32(text.Substring(6, 2)) > 31 || Convert.ToInt32(text.Substring(6, 2)) < 1) { textBox.Clear(); return ""; }
            return text.Substring(0, 4) + "/" + text.Substring(4, 2) + "/" + text.Substring(6, 2);
        }

سپس در رویدادهای GotFocus و LostFocus تکست باکس خود کدهای زیر رو مانند نمونه قرار بدید.

        private void textBox_GotFocus(object sender, RoutedEventArgs e)
        {
            textBox.Text = textBox.Text.Replace("/", "");
        }

        private void textBox_LostFocus(object sender, RoutedEventArgs e)
        {
            textBox.Text = FormatStringDate(Convert.ToInt32(textBox.Text.Trim()));
        }

به این صورت تاریخ وارد شده همون طور که گفتید کنترل میشه. حتی ورودی های ماه و روز هم کنترل میشه. مثلا کاربر نمیتونه ماه بیشتر از 12 و روز بیشتر از 31 رو وارد کنه. در صورت وارد کردن فرمت نادرست تکست باکس خالی میشه.

برای گرفتن مقدار تاریخ از تکست باکس به صورت int که فرمودید از کد زیراستفاده کنید. (جهت ذخیره در دیتابیس)

int date = Convert.ToInt32(textBox.Text.Trim().Replace("/", ""));

همچنین برای پر کردن تکست باکس زمانی که از دیتابیس سلکت میزنید از کد زیر استفاده کنید. 

textBox.Text = FormatStringDate(SelectedDate);

SelectedDate در کد بالا همان تاریخی است که به صورت int از دیتابیس سلکت زدید.

کدهای بالا رو استفاده کنید و در صورتی که مشکل داشتید بگید تا بررسی کنیم.

موفق باشید.

به این پاسخ امتیاز بدهید    2
امتیاز: 871 رتبه: 3
2 نظر
Alireza : سلام ماههایی که ۳۰ روز و ۲۹ روز هست رو چجور میشه کنترل کرد؟

امتیاز کاربر : 115   رتبه کاربر : 13   تاریخ ثبت : 10:41 1400/01/29
Sowgandi : سلام. پاسخ بالا یه مورد خاص هست. شما در حالات عادی باید از DataPicker شمسی استفاده کنید. که خودش همه این ها رو مدیریت میکنه

امتیاز کاربر : 871   رتبه کاربر : 3   تاریخ ثبت : 11:12 1400/01/30
پاسخ دهنده : Nori 10:51 1398/11/09

Sowgandi

خیلی خیلی ممنون از لطفتون 

چشم تست کنم 

سپاس

به این پاسخ امتیاز بدهید    1
امتیاز: 72 رتبه: 15
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود