FormatString برای ورود تاریخ شمسی
با سلام
دوستان خواهشا کمکم کنید گیرکردم بد
دوروز گیر ورودی تاریخم هر کاری میکنم درست نمیشه
من برای ورود تاریخ از تکس باس استفاده میکنم
چون دارم از متریال دیزاین استفاده میکنم و DatePicker اون شمسی نیستش و از DatePicker ها دیگه هم به دلیل ظاهر متفاوت با متریال دیزاین نمی خوام استفاده کنم
وچون تاریخ رو به صورت اینت به شکل 13980503 توو دیتابیس ذخیره کردم
میخوام از تکس باس برای دریافت تاریخ از کاربر استفاده کنم
می خوام به صورتی باش که کابر عدد رو به شکل 13980209 وارد کن و و نمایشش به صورت 1398/02/09 باش براش
و بحث کنترل رو هم روش میخوام مثلا 139829 نتونه وارد کن عدد و...
از بس تو این نت سرچ زدم و هرکی هرچی گفت رو کردم خود پروژم به مشکل خورده
ممنون میشم منو از این مخمصه نجات بدین
سلام دوست گرامی.
ابتدا در بدنه فرم خود کد زیر رو قرار بدید.
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 از دیتابیس سلکت زدید.
کدهای بالا رو استفاده کنید و در صورتی که مشکل داشتید بگید تا بررسی کنیم.
موفق باشید.
Sowgandi
خیلی خیلی ممنون از لطفتون
چشم تست کنم
سپاس
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- نمایش صفحه در پنجره جدید با کلیک روی لینک (تگ a) در Asp
- افزودن مقادیر به صورت دستی به List دریافت شده از ریپازیتوری
- نحوه بزرگنمایی بخش خاصی از یک تصویر در WPF
- نحوه استفاده از رویداد SelectionChanged در WPF
- مشکل تاریخ شمسی در ویندوز 7 در WPF
- رفع خطای FileNotFoundException در Wpf
- کار با رویداد SelectedDateChanged در کامپوننت تاریخ شمسی در سی شارپ
- minimize و maximize کردن پنجره های wpf
- دانلود نرم افزار Material Design In XAML Toolkit
- نمایش عکس در DataGrid در Wpf
- حذف پروسیجر (Procedure) از مدل داده ای در Entity Framework
- اتصال دیتابیس اکسس به کریستال ریپوت