概述存儲錯誤商
我在這個項目上擁有12 error providers
所有這些工作有自己獨特的名字,和目的。我知道我可以使用一個,但我需要確保他們都有自己的錯誤消息爲用戶。 該項目是winform
,我希望在我的保存按鈕上進行所有驗證評估,該按鈕訂閱click event
。
我的問題
我需要能夠以評估任何error providers
是否與保存功能,然後再繼續活躍。我有這個代碼可以工作,但它很繁瑣和冗長。我還需要向用戶顯示錯誤消息,以便他們可以指出哪些字段無效。
驗證法
bool IsValidIn()
{
foreach (Control c in panel1.Controls)
{
if (c is SpellBox)
{
//SpellBox txt = (SpellBox)c;
if (epForeName.GetError(c).Length > 0 || epSurname.GetError(c).Length > 0
|| epPostcode.GetError(c).Length > 0
|| epCountry.GetError(c).Length > 0
|| epCounty.GetError(c).Length > 0
|| epHouseName.GetError(c).Length > 0
|| epLocality.GetError(c).Length > 0
|| epStreetName.GetError(c).Length > 0
|| epMobile.GetError(c).Length > 0
|| epLandline.GetError(c).Length > 0
|| epAlternative.GetError(c).Length > 0
|| epEmail.GetError(c).Length > 0)
{ return false; }
}
}
return true;}
保存Click事件
public void btn_SaveDetails_Click(object sender, EventArgs e)
{
try
{
//txt_ForeName_Validated(this, e);
if (IsValidIn())
{
_IsValid = true;
BtnPressed = "Ok";
HouseName = txt_HouseName.Text;
HouseNumber = Convert.ToString(nud_HouseNumber.Value);
StreetName = txt_StreetName.Text;
Locality = txt_Locality.Text;
Town = txt_Town.Text;
County = txt_County.Text;
Country = txt_Country.Text;
PostCode = txt_Postcode.Text;
Email = txt_Email.Text;
Title = cmb_Title.Text;
BirthDate = Convert.ToString(dateTimePicker1.Text);
ForeName = txt_ForeName.Text;
SurName = txt_SurName.Text;
PrefContNum = cmb_PrefConNumber.Text;
PrefContTime = cmb_PrefConTime.Text;
Mobile = txt_Mobile.Text;
Landline = txt_LndLine.Text;
Alternative = txt_Alt.Text;
this.Close();
}
else
{
MessageBox.Show("Errors present in form, please review!!!"); //MessageBoxButtons.YesNo) == DialogResult.Yes);
}
}
可能的解決方法。
我想的變量可能存儲到一些排序的集合,更可能一本字典,通過存儲我的變量爲一個動態變量,然後通過Error-providers
迭代本身不過我真的不確定的可能性是否會有可能。如果有一個簡單的重構這個函數的方法,我會非常感激,如果有人可以幫助。
謝謝但是我得到'error = epEmail'的語法錯誤不能將類型的錯誤提供程序轉換爲字符串。 – whatdoyouNeedFromMe
對不起。答案編輯@whatdoyouNeedFromMe –
對不起,但你的答案只檢查電子郵件,姓氏和姓氏。如果我實施這個evry錯誤prov將會比我目前所做的更長 – whatdoyouNeedFromMe