استفاده از errorProvider در تمام textbox ها
من میخوام توی فرمم روی تمام textbox ها validation داشته باشه .
برای اینکار باید در رویداد textchanged تمام تکست باکسهام از ارورپروایدر استفاده کنم یا در رویداد validating تکست باکس رو بررسی کنم ؟
در اینصورت با وجود تکست باکسهای زیاد خیلی برنامه ام شلوغ و بهم ریخته میشه و یه عالمه کد باید بنویسم برای چک کردن ورودی فیلدها !
راه دیگه ای نیست ؟
اگه یه نمونه آماده برای چک کردن تکست باکسها (که خالی نباشن ، فقط عدد با تعداد یا فرمت مشخص یا فقط حروف باشن یا چکهتی دیگه با استفاده از regular expression ) دارید خیلی ممنون میشم برای دانلود بزارید
نقل قول: استفاده از errorProvider در تمام textbox ها
سلام. فقط یک error provider نیاز دارید.
اینو ببین (با یک تغییر کوچیک میتونید همزمان روی تمام کنترل ها، error provider بارونش! کنی) :
if (string.IsNullOrWhiteSpace(TxtYearExam.Text))
errorProvider1.SetError(TxtYearExam, "سال تحصیلی بایستی مشخص باشد");
else if (string.IsNullOrWhiteSpace(TxtTerm.Text))
errorProvider1.SetError(TxtTerm, "ترم تحصیلی بایستی مشخص باشد");
else if (string.IsNullOrWhiteSpace(CmbGroup.Text))
errorProvider1.SetError(CmbGroup, "گروه آموزشی بایستی مشخص باشد");
نقل قول: استفاده از errorProvider در تمام textbox ها
ممنون اما این کد فقط خالی نبودن فیلدها رو چک میکنه
اما من همونطور که گفتم میخوام مثلا برای تکست باکس کدملی چک کنه 10 رقم باشه برای تلفن 7-8 رقم و فقط عدد برای نام فقط حروف برای ایمیل فرمت مشخص و الی آخر
فکر میکنم تنها راهش همین باشه که پشت رویداد textchanged تمام تکست باکسها کد مربوطه رو بنویسم . نه ؟
برای اون textbox هایی که validation هاشون مثل هم هستن چی ؟ نمیشه یه کاری کرد که کدها کوتاه تر بشن ؟
نقل قول: استفاده از errorProvider در تمام textbox ها
if (string.IsNullOrWhiteSpace(TxtMeliCode.Text) || TxtMeliCode.Text.Length != 10)
errorProvider1.SetError(TxtMeliCode, "کد ملی را بصورت یک عدد 10 رقمی وارد نمایید");
else if (string.IsNullOrWhiteSpace(TxtPhone.Text) || TxtPhone.Text.Length != 11)
errorProvider1.SetError(TxtPhone, "شماره تلفن یک عدد 11 رقمی می باشد");
نقل قول: استفاده از errorProvider در تمام textbox ها
ممنون .
میشه یک مثال هم بزنید که چطور میشه regularexpression ها رو هم خلاصه کرد ؟
یه سوال دیگه :
من این کدها رو در ایونت کلیک دکمه ثبت اطلاعات نوشتم . با اینکه ارورپروایدر ارور میده ولی بازم ثبت اطلاعات صورت میگیره . چطور میتونیم کاری کنیم که تا اطلاعات درست وارد نشده ثبت صورت نگیره ؟
نقل قول: استفاده از errorProvider در تمام textbox ها
نقل قول: استفاده از errorProvider در تمام textbox ها
نقل قول:
نوشته شده توسط
SamStar
ممنون .
میشه یک مثال هم بزنید که چطور میشه regularexpression ها رو هم خلاصه کرد ؟
اگه منظورتون مثلا وارد کردن فقط عدد یا وازد کردن فقط حروف فارسی هست قبلا بارها بحث شده. جستجو کنید.
نقل قول:
من این کدها رو در ایونت کلیک دکمه ثبت اطلاعات نوشتم . با اینکه ارورپروایدر ارور میده ولی بازم ثبت اطلاعات صورت میگیره . چطور میتونیم کاری کنیم که تا اطلاعات درست وارد نشده ثبت صورت نگیره ؟
این برمیگرده به مدیریت کردن if و else . کدت رو بزار.
نقل قول: استفاده از errorProvider در تمام textbox ها
این رویداد کلیک دکمه ثبت اطلاعات است که بعد از try/catch بررسی اطلاعات وارد شده در تکست باکسها رو انجام میده (البته این قسمت رو هنوز تکمیل نکردم و فعلا فقط کدهای شما رو برای تست گذاشتم :
باید if /else بزارم که وقتی errorprovider خطا میگیره عملیات انجام نشه ؟
private void button1_Click(object sender, EventArgs e)
{
try
{
BLL objBLL = new BLL();
string Values = "('" + txtName.Text + "','" + txtFamily.Text + "','"
+ txtTel.Text + "')";
objBLL.Insert(Values);
lblconfirm.Visible = true;
}
catch
{
lblconfirm.Text = "بروز خطا در سیستم";
lblconfirm.Visible = true;
}
ErrorProvider ep = new ErrorProvider();
if (string.IsNullOrEmpty(txtName.Text))
ep.SetError(txtName, "نمیتواند خالی باشد");
else
ep.SetError(txtName, "");
if (string.IsNullOrEmpty(txtName.Text))
errorProvider1.SetError(txtName, "سال تحصیلی بایستی مشخص باشد");
else if (string.IsNullOrEmpty(txtFamily.Text))
errorProvider1.SetError(txtFamily, "ترم تحصیلی بایستی مشخص باشد");
else if (string.IsNullOrEmpty(txtTel.Text))
errorProvider1.SetError(txtTel, "گروه آموزشی بایستی مشخص باشد");
if (string.IsNullOrEmpty(txtcode.Text) || txtcode.Text.Length != 10)
{
errorProvider1.SetError(txtcode, "کد ملی را بصورت یک عدد 10 رقمی وارد نمایید");
}
else if (string.IsNullOrEmpty(txtTel.Text) || txtTel.Text.Length != 11)
errorProvider1.SetError(txtTel, "شماره تلفن یک عدد 11 رقمی می باشد");
}
این هم رویداد ontextchange یکی از تکست باکسهام با regularexpression هستش که بقیه تکست باکسها هم مثل همین کد رو پشت رویداد تکست چنج دارن:
private void txtemail_TextChanged(object sender, EventArgs e)
{
Regex rgx;
rgx = new Regex(@"^\S+@\S+\.\S+$");
Control ctrl = (Control)sender;
if (rgx.IsMatch(ctrl.Text))
{
errorProvider1.SetError(ctrl, "");
}
else
{
errorProvider1.SetError(ctrl, "ایمیل نامعتبر");
}
}
نقل قول: استفاده از errorProvider در تمام textbox ها
شما اول درج میکنی بعد چک میکنی؟.
شما ساده ترین مسائل رو هم در برنامه رعایت نمیکنی دوست عزیز.
موفق باشید.
1 ضمیمه
نقل قول: استفاده از errorProvider در تمام textbox ها
سلام به همه
من معمولا از این شیوه استفاده می کنم
نقل قول: استفاده از errorProvider در تمام textbox ها
نقل قول:
نوشته شده توسط
veniz2008
شما اول درج میکنی بعد چک میکنی؟.
شما ساده ترین مسائل رو هم در برنامه رعایت نمیکنی دوست عزیز.
موفق باشید.
متوجه منظورتون نمیشم !
یعنی چی درج میکنی بعد چک میکنی ؟ کدها رو گذاشتم سرجاشون ولی هنوز فرصت نکردم طبق تکست باکسهام تنظیمشون کنم . این چه اشکالی داره ؟
ضمنا ما اینجا هستیم که چیزهای جدید یادبگیریم و برنامه نویسی مون رو پیشرفت بدیم . حالا هرکس درسطح خودش .
پس اگه مشکلی درکارم می بینید لطفا کمک کنید که رفع بشه نه با لحنی که حالت طعنه داره !
نقل قول: استفاده از errorProvider در تمام textbox ها
سلام
دوسمون هم اشاره کردن قبل از اینکه قسمت Try رو اجرا بکنید باید ورودی هایی رو که کاربر وارد میکنه رو بررسی بکنید. یعنی اول ورودی ها رو چک کنید اگر اطلاعاتی که کابر وارد کرده درست باشن قسمت Try اجرا بشه و داده ها ذخیره بشن. در غیر اینصورت برنامه از اجرای قسمت Try صرف نظر کنه.
بهتره برای اینکار یک تابع بنویسید که اطلاعات وارد شده توسط کاربر رو چک بکنه، اگه داده ها درست بودن مقدار true و در غیر اینصورت false رو برگردونه.
private bool CheckInputFields()
{
ErrorProvider ep = new ErrorProvider();
if (string.IsNullOrEmpty(txtName.Text))
{
ep.SetError(txtName, "نمیتواند خالی باشد");
return false;
}
else
ep.SetError(txtName, "");
if (string.IsNullOrEmpty(txtName.Text))
{
errorProvider1.SetError(txtName, "سال تحصیلی بایستی مشخص باشد");
return false;
}
else
errorProvider1.SetError(txtName, "");
if (string.IsNullOrEmpty(txtFamily.Text))
{
errorProvider1.SetError(txtFamily, "ترم تحصیلی بایستی مشخص باشد");
return false;
}
else
errorProvider1.SetError(txtFamily, "");
if (string.IsNullOrEmpty(txtTel.Text))
{
errorProvider1.SetError(txtTel, "گروه آموزشی بایستی مشخص باشد");
return false;
}
else
errorProvider1.SetError(txtTel, "");
if (string.IsNullOrEmpty(txtcode.Text) || txtcode.Text.Length != 10)
{
errorProvider1.SetError(txtcode, "کد ملی را بصورت یک عدد 10 رقمی وارد نمایید");
return false;
}
else
errorProvider1.SetError(txtcode, "");
if (string.IsNullOrEmpty(txtTel.Text) || txtTel.Text.Length != 11)
{
errorProvider1.SetError(txtTel, "شماره تلفن یک عدد 11 رقمی می باشد");
return false;
}
else
errorProvider1.SetError(txtTel, "");
Regex rgx;
rgx = new Regex(@"^\S+@\S+\.\S+$");
if (!rgx.IsMatch(txtemail.Text))
{
errorProvider1.SetError(txtemail, "ایمیل نامعتبر");
return false;
}
else
errorProvider1.SetError(txtemail, "");
return true;
}
حالا داخل رویداد کلیک button1 تابع بالا رو فراخوانی میکنید
private void button1_Click(object sender, EventArgs e)
{
if (!CheckInputFields())
return;
try
{
BLL objBLL = new BLL();
string Values = "('" + txtName.Text + "','" + txtFamily.Text + "','"
+ txtTel.Text + "')";
objBLL.Insert(Values);
lblconfirm.Visible = true;
}
catch
{
lblconfirm.Text = "بروز خطا در سیستم";
lblconfirm.Visible = true;
}
}
توی رویداد بالا اگه مقدارشرط که اول رویداد هست true باشه بقیه کدها اجرا میشن (یعنی قسمت try)
و اگه مقدار false باشه با دستور return کامپایلر از اجرای کدهای بعدی در این تابع خود داری میکنه و از تابع خارج میشه.
موفق باشید