PDA

View Full Version : سوال: کنترل maskedtextbox برای تاریخ ورودی



hana2064
چهارشنبه 30 اردیبهشت 1388, 10:32 صبح
سلام منم میخوام masked چک کنم که تاریخ ورودیش اشتباه نباشه . یه پست تو تالار پیدا کردم که برای فرمت Shortdate یعنی الگوی (00/00/0000) کد زیر رو استفاده میکنه
کد:
if ( (int.Parse(maskedTextBox1.Text.Substring(3, 2)) > 6 && int.Parse(maskedTextBox1.Text.Substring(0, 2)) > 30) || int.Parse(maskedTextBox1.Text.Substring(0, 2)) > 31 || int.Parse(maskedTextBox1.Text.Substring(0, 2)) < 1 || int.Parse(maskedTextBox1.Text.Substring(3, 2)) > 12 || int.Parse(maskedTextBox1.Text.Substring(3, 2)) < 1 || int.Parse(maskedTextBox1.Text.Substring(6, 4)) > 2000 || int.Parse(maskedTextBox1.Text.Substring(6, 4)) < 1300) MessageBox.Show("خطا در ورود تاریخ ...!");else MessageBox.Show("تاریخ مورد قبول است.");
ام وقتی من الگو رو به 00/00/0000 تغییر میدم این کد کار نمیکنه
دقیقا نمیدونم که Text.Substring(3, 2) کدوم قسمت از این الگو رو چک میکنه؟ لطفا راهنمایی کنید
http://barnamenevis.org/forum/images/statusicon/user_online.gif http://barnamenevis.org/forum/images/buttons/report.gif (http://barnamenevis.org/forum/report.php?p=726036) http://barnamenevis.org/forum/images/misc/progress.gif

dr_csharp
چهارشنبه 30 اردیبهشت 1388, 11:04 صبح
سلام
شما خیلی راحت می تونید با استفاده از متدهای remove و replace و .. موجود برای String ها ابتدا کاراکتر Seprator را جدا کنید و بعد از اون Validation مورد نظرتون رو اعمال کنید ..

NewFoxStudent
چهارشنبه 30 اردیبهشت 1388, 14:51 عصر
ام وقتی من الگو رو به 00/00/0000 تغییر میدم این کد کار نمیکنه
دقیقا نمیدونم که Text.Substring(3, 2) کدوم قسمت از این الگو رو چک میکنه؟ لطفا راهنمایی کنید

این قسمت مقدار ماه رو میگیره که البته درستش

int.Pares(text.Substring(4,2))
هستش

hana2064
چهارشنبه 30 اردیبهشت 1388, 15:47 عصر
ممنونم ولی
من نگرفتم که برای این الگو 00/00/0000 بازه سال و ماه و روز کدومه ؟ این بازه ها چجوری حساب میشن؟

13601360
چهارشنبه 30 اردیبهشت 1388, 18:07 عصر
از این کد استفاده کنید.


string[] str = maskedTextBox1.Text.Split('/');
int i = Int32.Parse(str[0] + str[1] + str[2]);

NewFoxStudent
چهارشنبه 30 اردیبهشت 1388, 18:42 عصر
من نگرفتم که برای این الگو 00/00/0000 بازه سال و ماه و روز کدومه ؟ این بازه ها چجوری حساب میشن؟
از کدی که بالا نوشتید کاملا مشخصه
روز اگر 6 ماه اول بودیم 31 و اگر 6 ماه دوم بودیم 30
ماه 12
سال 365

برای کنترل تاریخ ورودی میتونید به روش زیر عمل کنید



string str = "1388/32/01";
PersianCalendar p = new PersianCalendar();
int m, y, d;
m = int.Parse(str.Substring(5, 2));
y = int.Parse(str.Substring(0, 4));
d = int.Parse(str.Substring(8, 2));
try
{
p.ToDateTime(y, m, d, 0, 0, 0, 0);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}

nowar1352
جمعه 21 مرداد 1390, 19:55 عصر
دوست عزيز اينو كجاي برنامه بنويسم