PDA

View Full Version : مبتدی: مشکل در error provider



saeidghadiri
شنبه 24 مرداد 1394, 23:03 عصر
سلام

خوبین یه کمک میشه به من بکنید.

این کد کلاس لاگین منه:

private static string Username;
public static string USERNAME
{
get { return Username; }
set { Username = value; }
}

private static string Name;
public static string NAME
{
get { return Name; }
set { Name = value; }
}

private static string Family;
public static string FAMILY
{
get { return Family; }
set { Family = value; }
}

public static Tbl_Login loginUser { get; private set; }
public static bool LOGIN { get; private set; }

public static bool CheckLogin(String _Username, string _PassWord)
{
var db = new ArshaDBDataContext();
var query = db.Tbl_Logins.SingleOrDefault(x => x.UserName == _Username && x.PassWord == _PassWord);

if (query != null)
{
loginUser = query;
LOGIN = true;
}
else
{
LOGIN = false;
}
return LOGIN;
}

این کد btn Login:

private void btn_Login_Click(object sender, EventArgs e)
{
ErrorLogin();
try
{
string _User = txt_UserName.Text;
string _Pass = txt_PassWord.Text;

if (Classes.ClsUser.CheckLogin(_User, _Pass) == true)

this.Close();
else
{

}

}
catch (Exception)
{

}
}


اینم کد error provider:

public bool ErrorLogin()
{
errorProvider1.Clear();
bool shart = false;
if (txt_UserName.Text.Trim() == "")
{
errorProvider1.SetError(txt_UserName, "لطفا نام كاربري را وارد نماييد");
txt_UserName.Focus();
}
else if (txt_PassWord.Text.Trim() == "")
{
errorProvider1.SetError(txt_PassWord, "لطفا رمز عبور را وارد نماييد");
txt_PassWord.Focus();
}
else
{
// DialogResult res = FMessegeBox.FarsiMessegeBox.Show("نام كاربري و رمز عبور را اشتباه وارد كرده ايد!", "خطای ورود به سیستم", FMessegeBoxButtons.Ok, FMessegeBoxIcons.Exclamtion);

shart = true;

}
return shart;
}

حالا مشکلم اینجاست:

1- همون اول که روی btn-OK کلیک میکنم کرسر ماوس میره روی txt-username و بعد از پر کردن و رفتن به txt-password همچنان آیکن Error کنار txt-username هست حالا txt-password رو هم پر کنم باز آیکن Error کنارش میمونه می خوام بعد از پر شدن txt-username آکنش غیر فعال شه آکن txt-password آلارم بده و باز بعد از پر کردنش آیکنش غیرفعال شه.

2- موضوع اینه که حالا طرف امد txt ها رو پر کرد اگه اشتباه وارد کرده بود بهش یه messagebox نشون بده بگه نام کاربر و رمز اشتباس .

میشه راهنماییم کنید؟

Mahmoud.Afrad
یک شنبه 25 مرداد 1394, 00:18 صبح
متد ErrorLogin رو در رویداد validating کنترل مورد نظر فراخوانی کن.

saeidghadiri
سه شنبه 27 مرداد 1394, 06:43 صبح
زدم نمیشه ممنون ازت راهنمایی کردی

veniz2008
سه شنبه 27 مرداد 1394, 11:36 صبح
سلام
مشکلم اینجاست:

1- همون اول که روی btn-OK کلیک میکنم کرسر ماوس میره روی txt-username و بعد از پر کردن و رفتن به txt-password همچنان آیکن Error کنار txt-username هست حالا txt-password رو هم پر کنم باز آیکن Error کنارش میمونه می خوام بعد از پر شدن txt-username آکنش غیر فعال شه آکن txt-password آلارم بده و باز بعد از پر کردنش آیکنش غیرفعال شه.

2- موضوع اینه که حالا طرف امد txt ها رو پر کرد اگه اشتباه وارد کرده بود بهش یه messagebox نشون بده بگه نام کاربر و رمز اشتباس .

میشه راهنماییم کنید؟


سلام.
1. می تونید قبل از ورود به هر else، ابتدا پیغام مربوط به کنترل قبلی رو خالی کنید تا نمایش داده نشه. اگرم میخواید که به محض خروج از تکست باکس (بدون زدن دکمه) errorprovider بره می تونید در رویداد Leave کنترل مورد نظر errorprovider رو خالی کنید.

public bool ErrorLogin()
{
errorProvider1.Clear();
bool shart = false;
if (txt_UserName.Text.Trim() == "")
{
errorProvider1.SetError(txt_UserName, "لطفا نام كاربري را وارد نماييد");
txt_UserName.Focus();
}
else if (txt_PassWord.Text.Trim() == "")
{
errorProvider1.SetError(txt_UserName, "");
errorProvider1.SetError(txt_PassWord, "لطفا رمز عبور را وارد نماييد");
txt_PassWord.Focus();
}
else
{
errorProvider1.SetError(txt_PassWord, "");
// DialogResult res = FMessegeBox.FarsiMessegeBox.Show("نام كاربري و رمز عبور را اشتباه وارد كرده ايد!", "خطای ورود به سیستم", FMessegeBoxButtons.Ok, FMessegeBoxIcons.Exclamtion);

shart = true;

}
return shart;
}
به نظر میاد که ابتدای کار هستید و تازه اقدام به یادگیری زبان سی شارپ کردید. یه مجموعه آموزشی در تاپیک زیر هست شاید به دردت بخوره :
http://barnamenevis.org/showthread.php?415427-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%88%DB%8C%D8%AF%D8%A6%D9%88%DB%8C%DB%8C-%DB%8C%DA%A9-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE-%D8%A7%D8%B2-%D8%A7%D8%A8%D8%AA%D8%AF%D8%A7-%D8%AA%D8%A7-%D8%A7%D9%86%D8%AA%D9%87%D8%A7&p=1856076&viewfull=1#post1856076
موفق باشید.

davidrobert
سه شنبه 27 مرداد 1394, 16:12 عصر
شما میخواهید وقتی کادر متن نام کاربری یا رمز عبور پور شد آیکن خطا از کنار کادر متن بره کنار اگه منظور شما این هستش باید در رویداد textchange این رو بنویسید.
errorProvider1.SetError(txt_PassWord,string.Empty) ;
این رو بنوبید در کادر مورد نظر که وقتی پور شد اون آیکن از کنار برنامه میره.