Обзор функции.
У меня есть эта функция SaveDetails
внутри WinForm
, которая выполняет итерацию по всем controls
, чтобы определить, были ли какие-либо errorProviders
отмечены в form
во время пользовательского ввода. Если функция returns true
, все мои значения TextBoxes
должны храниться в моих личных полях, отображать окно сообщений и закрывать форму.
// Примерно для 15 текстовых полей можно ли добиться этого также с помощью цикла? Так как это выглядит очень громоздко.
title = cmb_Title.Text;
Если в итерации были найдены returns false
и errorProvider
, необходимо отобразить сообщение об ошибке для пользователя, очистить частные поля и дать пользователю возможность повторно ввести данные, но не очистить текстовые поля!!
Проблема:
цикл перебирает все, все элементы управления, независимо от того, нашел ли он errorProvider
. Как я могу остановить это, чтобы просто отметить, когда был найден только один? Эта функция также находится в файле clickEvent
.
Код
isValid = true;
foreach (Control c in panel1.Controls)
{
if (errorProvider1.GetError(c).Length > 0)
{
isValid = false;
MessageBox.Show("invalid entry, please revisit the form before proceding");
}
}
if (isValid)
{
title = cmb_Title.Text;
surName = txt_SurName.Text;
dateOfBirth = dateTimePicker1.Text.ToString();
MessageBox.Show("Indi Form Saved");
Hide();
}