PDA

View Full Version : تابع برای صحت فقط زمان



somayekhezri
یک شنبه 30 بهمن 1390, 17:43 عصر
سلام دوستان وقتتون بخیر

من دنبال یک تابع برای برررسی این که کاربر زمان را صحیح وارد میکند یا نه میگردم.

تو فرمم از maskedtextbox استفاده کردم با مسک:00:00

میخوام از تابعی برای بررسی استفاده کنم تا در صورت وارد کردن زمان اشتباه اخطار داده شود

فققققققققققققططططط ززززززززمااااااان نه تاریخ

ممنون

Yanehsar
یک شنبه 30 بهمن 1390, 21:49 عصر
سلام دوستان وقتتون بخیر

من دنبال یک تابع برای برررسی این که کاربر زمان را صحیح وارد میکند یا نه میگردم.

تو فرمم از maskedtextbox استفاده کردم با مسک:00:00

میخوام از تابعی برای بررسی استفاده کنم تا در صورت وارد کردن زمان اشتباه اخطار داده شود

فققققققققققققططططط ززززززززمااااااان نه تاریخ

ممنون

سلام از این کدها استفاده کن اما این کدها بستگی به کاربرت داره چون کاربرت امکان چند دقیقه طول بکشه تا اطلاعات مورد نظر تو رو پر کنه اون وقت پیام خطا میده

string timenow=DateTime.Now.Hour.ToString()+":"+DateTime.Now.Minute.ToString();
if (maskedTextBox1.Text == timenow)
{
MessageBox.Show("Time ok");
}
else
{
MessageBox.Show("Not Time");
}

somayekhezri
دوشنبه 01 اسفند 1390, 20:01 عصر
سلام

منظورم این نبود

ما مثلا تو برنامه هامون میایم از تابع chechdate یا چیزای دیگه استفاده میکنیم که اگه کاربر مثلا روز مربوط به تاریخ رو 36 وارد کرد این تابع بررسی میکنه که این روز مجاز نیست و من با فراخوانی این تابع تو برنامم و یک errorprovider به کاربر میگم که مشکل کار کجاست و برنامه هنگ نمی کنه.

حالا دنبال یه تابعی با این داستان برای زمان(فقط زمان)می گردم.اگه کاربر مثلا ساعت رو 25 یا یه چیز غیر مجاز وارد کرد بهش خطا بده تا برنامم هنگ نکنه.

shadi khanum
دوشنبه 01 اسفند 1390, 23:47 عصر
دوست عزیز یه Sample واست نوشتم. کاری که میخوای رو انجام میده
موفق باشی

Yanehsar
سه شنبه 02 اسفند 1390, 00:03 صبح
من یه کار ساده انجام میدم که اگر از 24 بیشتر باشه خطا بده.


maskedTextBox1.TextMaskFormat = "IncludePrompt";
if (Convert.ToInt32(maskedTextBox1.Text) > 2359)
MessageBox.Show("not time");

somayekhezri
سه شنبه 02 اسفند 1390, 00:06 صبح
خیلی ممنونم ازت شادی جون

تا الان خیلی کمکم کردی

واقعا ممنون

در پناه حق

flash118
سه شنبه 02 اسفند 1390, 00:09 صبح
با تشکر از شادی خانوم ولی من بهتون یه خط کد ارائه میدم که کارتون رو خیلی ساده میکنه و نیاز به اون همه دستور نیست موفق باشید
DateTime temp;

if(DateTime.TryParse(txtInputTime.Text, out temp))
MessageBox.Show("درست :"+temp.ToString());

else
MessageBox.Show("درست وارد نشده ");

gwbasic
سه شنبه 02 اسفند 1390, 08:59 صبح
جواب سوالتون رو با راهنمایی دوستان حتما گرفتید. من چند مورد رو به صورت کلی بهشون اشاره می کنم امیدوارم در ادامه کمکتون کنه.
معمولا برای گرفتن هر نوع اطلاعاتی باید دو مورد رو در بررسی کنیم
1- از چه نوع داده ای استفاده کنیم
2- از چه کنترلی برای این نوع داده استفاده کنیم

برای گرفتن زمان دو نوع داده به صورت در دات نت وجود دارد. DateTime و TimeSpan که هر دو ملاحظاتی دارند که باید در نظر گرفته شود. DateTime شامل تاریخ و زمان می باشد و TimeSpan یک بازه زمانی را مشخص می کند نه یک زمان 24 ساعته!
فرض کنید ما DateTime رو انتخاب می کنیم.

در مورد کنترل ممکن است کنترل های موجود کمکمان نکند و نیاز به استفاده از component های دیگر داشته باشیم و یا اینکه برای مورد خاص خودمان مجبور به ساخت کنترل خاصی شویم.
فرض کنید ما DateTimePicker رو انتخاب کنیم.

اما شاید بپرسید که این کنترل تاریخ را می گیرد!!! اما اینطور نیست کافیست فرمت رو براش مشخص کنید تا فقط تایم را بگیرد به صورت زیر:

dateTimePicker1.ShowUpDown = true;
dateTimePicker.CustomFormat = "hh:mm";
dateTimePicker1.Format = DateTimePickerFormat.Custom


به این شکل دیگر نیاز به متدی برای صحت زمان وارد شده نیست چراکه کنترل مورد نظر اجازه ورود داده اشتباه را نمی دهد.
حالا زمان وارد شده را چطور بگیریم؟
پراپرتی value از این کنترل داده وارد شده را بر میگرداند که البته به صورت DateTime هست و برای گرفتن فقط زمان کافی هست از پراپرتی TimeOfDay استفاده کنید! (قابل توجه کاربر گرامی Yanehsar)
در نهایت با توجه به شرایط پروژه مورد نظرتون می تونید با کمکی تغییر به نیازتون برسید.

اما شاید بپرسید من که اینها رو نمی دونم چطوری می شه به این اطلاعات دست یافت؟
کافیست کمی جستجو کنید و برای این کار فقط keyword های مورد نظر رو همراه هم جستجو کنید مثل DateTime, TimeSpan, Winform , Control

بطور خلاصه منظور نظر من این است که وقتی با یک فریمورکی بزرگی مثل دات نت با فورام های پر از اطلاعات کار می کنیم قبل از دست به کار شدن بهتر است بصورت کلی جستجو کنیم نه به صورت جزئی فرضا درخواست یک متد برای validate

موفق باشید