OriginalGriff
Предполагая, что "ItemTypeName", "ItemCategoryName" и т. д. являются текстовыми полями или подобными им, рефакторируйте их в метод:
private bool CheckValidity(TextBox tb, ErrorConstant fail)
{
if (tb.Text == string.Empty || tb.Text == StringConstants.select ||
tb.SelectedValue.ToString() == StringConstants.select)
{
this.Master.LblError.Text= fail;
this.Master.LblError.ForeColor = Color.Red;
tb.Focus();
return false;
}
return true;
}
Тогда просто позвоните ему несколько раз:
return CheckValidity(ItemTypeName,ErrorConstants.selectItemType) &&
CheckValidity(ItemCategoryName,ErrorConstants.selectItemCat) &&
CheckValidity(ManufacturerName,ErrorConstants.selectMake) &&
CheckValidity(PackagingByName,ErrorConstants.selectPackage);
- Но здесь у меня четыре разных текстовых поля.
Тогда как я могу взять их в одном "если утверждение"?
на самом деле у меня есть 4 поля со списком а не текстовые поля"
TextBox/ComboBox - это не имеет никакого значения! Просто измените тип параметра.
Когда вы делаете такое заявление, как
bool b = bool1 && bool2 && bool3;
он оценивает их в строгом порядке: сначала Bool1. Если это так, оцените bool2. Если это не так, не идите дальше, потому что все выражение ложно.
Как только компилятор доберется до точки, где один
false
встречается, он прекращает обработку.
Так:
return CheckValidity(ItemTypeName,ErrorConstants.selectItemType) &&
CheckValidity(ItemCategoryName,ErrorConstants.selectItemCat) &&
CheckValidity(ManufacturerName,ErrorConstants.selectMake) &&
CheckValidity(PackagingByName,ErrorConstants.selectPackage);
будет возвращать
true
если и только если все ваши текстовые поля / комбо-боксы проходят проверку. Если какой-либо из них выйдет из строя, он прекратит обработку и вернется
false
;