تو برنامه ام می خوام اگه دکمه save زده شده چک کنه فیلد مربوط به تاریخ درست واردشده یا نه برای این کار چکار می تونم بکنم؟
تو برنامه ام می خوام اگه دکمه save زده شده چک کنه فیلد مربوط به تاریخ درست واردشده یا نه برای این کار چکار می تونم بکنم؟
منظورتون فرمت تاریخ یا خود تاریخ ؟
یعنی تاریخ رو غلط تایپ نکرده باشه مثلا 54/15/1368 یا 31/12/5454
برای دریافت تاریخ از طرف کاربر بجای استفاده از TextBox، از MaskedTextBox استفاده کنید و پراپرتی Mask او رو برابر با Short date قرار دهید، حال ورود تاریخ باید مطابق با اصول باشد اما برای چک کردن درستی ارقام وارد شده کد زیر را برای دکمه Save بنویسید :
if (
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("خطا در ورود تاریخ ...");
روش درستش رو پیدا کردم برای دوستان هم گذاشتم تا استفاده کنند.
try
{
string[] sss = newstring[3];
sss = mtxtTSokonat.Text.Split('/');
System.Globalization.PersianCalendar pc = new System.Globalization.PersianCalendar();
pc.ToDateTime(Convert.ToInt16(sss[0]), Convert.ToInt16(sss[1]), Convert.ToInt16(sss[2]), 0, 0, 0, 0);
MessageBox.Show("Date is current.");
}
catch
{
lbl1.Visible = true;
lbl1.ForeColor = Color.Red;
lbl1.Text = "Date is mistake.";
System.Media.SystemSounds.Beep.Play();
mtxtTSokonat.Focus();
mtxtTSokonat.SelectAll();
}
پیش خودم گفتم مسئله اون نیست، دیگه خودتون اون کارو انجام میدید ...
با اضافه کردن دوتا شرط دیگه مشکلش حل میشه :
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("خطا در ورود تاریخ ...");