PDA

View Full Version : چک کردن تاریخ وارد شده در maskedtextbox



setareh2013
یک شنبه 31 فروردین 1393, 21:38 عصر
با سلام
من داخل فرم دو تا کنترل masked textbox مانند شکل زیر برای تاریخ قرار دادم . چه کار کنم که اگه کاربر تاریخ رو اشتباه وارد کرد ، مثلا تاریخی غیر واقعی مثلا کمتر از 1360 یا بزرگتر از تاریخ فعلی وارد کرد یا ماه را بیشتر از 12 وارد کرد خطا بدهد و ثبت نکند ؟
با تشکر
118197

erfan_urchin
یک شنبه 31 فروردین 1393, 23:30 عصر
سلام
من اینو برای یکی از برنامه هام نوشته بودم که خیلی بدردم خورد این کد حتی تاریخ کبیسه هم چک میکنه (یعنی مثلا اگه طرف زد 93/12/30 قبول نکنه چون 93 کبیسه نیست اما اگه زد 91/12/30 قبول کنه)
فقط اینو به عنوان یه کلاس درست کنید تا بتونید همه جا ازش استفاده کنید
public bool standarddate(string date)
{
bool accept = true;
string[] a = new string[3];
a = date.Split('/');
if (Convert.ToInt16(a[0]) == 0000 || Convert.ToInt16(a[1]) == 00 || Convert.ToInt16(a[2]) == 00 || Convert.ToInt16(a[1]) > 12 || (Convert.ToInt16(a[1]) < 07 && Convert.ToInt16(a[2]) > 31) || ((Convert.ToInt16(a[1]) > 06 && Convert.ToInt16(a[1]) <= 12) && Convert.ToInt16(a[2]) > 30))
accept = false;
else if ((Convert.ToInt16(a[0]) % 33 != 1 && Convert.ToInt16(a[0]) % 33 != 5 && Convert.ToInt16(a[0]) % 33 != 9 && Convert.ToInt16(a[0]) % 33 != 13 && Convert.ToInt16(a[0]) % 33 != 17 && Convert.ToInt16(a[0]) % 33 != 22 && Convert.ToInt16(a[0]) % 33 != 26 && Convert.ToInt16(a[0]) % 33 != 30) && Convert.ToInt16(a[1]) == 12 && Convert.ToInt16(a[2]) > 29)
accept = false;
return accept;
}

برای این کلاس متن maskedTextBox رو به عنوان ورودی بش بدین و به عنوان خروجی یه bool برمیگردونه اگه true بود یعنی تاریخ درسته اگه false داد یعنی تاریخ یه مشکلی داره
اگرم میخواین شرط خاصی مثل اینکه کمتر از 1360 نتونه وارد کنه بزارین باید خودتون تغییراتی توش بدین
تو کدهای بالا a[0] سال و a[1] ماه و a[2] روز هستش
در ضمن maskedtextbox رو باید left to right کنید تا تاریخو کاربر بتونه به این شکل وارد کنه روز/ماه/سال
موفق باشید