Если я вас понимаю правильно, вы ищете способ проверки многих элементов управления в форме в цикле. Есть несколько способов сделать это.
Один из способов - создать коллекцию уровня на форме, которая содержит ссылки на элементы управления. Например, что-то вроде этого:
private IEnumerable<TextBox> textBoxes = new List<TextBox>
{
TextBox1,
TextBox2,
TextBox3
};
Затем вы можете проверить это в цикле:
var errors = new List<string>();
foreach (var textBox in textBoxes)
if (string.IsNullOrWhitespace(textBox.Text))
errors.Add(string.Format("{0} is empty.", textBox.Name));
// errors now contains the list of validation messages
Недостатком является то, что вам нужно вручную сохранить коллекцию обновляется, если вы измените форма. Если не будет много изменений, это не должно быть проблемой.
Другой вариант может состоять в том, чтобы прокрутить коллекцию Controls
формы. Что-то вроде этого:
var errors = new List<string>();
foreach (var control in Controls)
if (control is TextBox)
if (string.IsNullOrWhitespace((control as TextBox).Text))
errors.Add(string.Format("{0} is empty.", (control as TextBox).Name));
// errors now contains the list of validation messages
Это более динамичный, но немного более хрупкий. Если есть какие-либо текстовые поля, вложенные в другие элементы управления, тогда они не найдут их, вам нужно будет сделать это более рекурсивным для цикла через control.Controls
. Это может стать немного уродливым и, возможно, не стоит того, если форма вряд ли изменится. Но в любом случае, это может выглядеть примерно так:
private IList<string> GetErrorsForControls(ControlCollection controls)
{
var errors = new List<string>();
foreach (var control in controls)
{
if (control is TextBox)
if (string.IsNullOrWhitespace((control as TextBox).Text))
errors.Add(string.Format("{0} is empty.", (control as TextBox).Name));
errors = errors.Concat(GetErrorsForControls(control.Controls));
}
return errors;
}
Тогда в вашем коде вы бы просто вызвать этот метод:
var errors = GetErrorsForControls(Controls);
Чтобы добавить проверку для других типов элементов управления, кроме текста коробки, просто добавьте другие коллекции уровня класса или добавьте проверки других типов в циклы.
'' базовый цикл if ''- Что такое« цикл if »? Не совсем понятно, что вы спрашиваете, или где вы застряли. Вы можете ссылаться на любые элементы управления в форме этого кода, что не работает? – David
ничего себе. 'if loop' и' message box, чтобы проверить всю программу'. Ты мертв ко мне, Бобби. –
@SamAxe Я новичок в этом, и я использовал только «if», чтобы попытаться заставить людей понять, о чем я говорю. Если у вас есть предложения, пожалуйста, дайте мне знать – Chris123454321