Überblick über die Funktion.Iterieren durch Kontrollen, um FehlerProvider zu finden C# WinForm
Ich habe diese SaveDetails
Funktion innerhalb eines WinForm
, der iteriert durch alle der controls
, um zu bestimmen, ob irgendein errorProviders
haben im form
während der Benutzer Eingabe markiert wurde. Wenn die Funktion returns true
, alle meine TextBoxes
Werte in meinen privaten Feldern gespeichert werden müssen, und eine messagesagebox anzeigen und das Formular schließen.
// Für etwa 15 TextBoxen, Könnte dies auch durch Schleifen erreicht werden? Da sieht das sehr umständlich aus.
title = cmb_Title.Text;
Wenn returns false
und ein errorProvider
hat in der Iteration gefunden wurde, muss es eine Fehlermeldung für den Anwender klar privaten Felder angezeigt werden und der Benutzer Chance geben Details erneut eingeben, jedoch nicht klar area per !!
Ausgabe:
die Schleife durchläuft alles, alle Steuerelemente unabhängig davon, ob es eine errorProvider
gefunden. Wie kann ich damit aufhören, nur zu markieren, wenn nur einer gefunden wurde? Diese Funktion befindet sich auch in einem clickEvent
.
-Code
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();
Es macht nie Sinn, mehr als einen ErrorProvider für ein Formular zu verwenden. Eine reicht aus, um Symbole und QuickInfos für alle Steuerelemente bereitzustellen. Sie werden natürlich nie Probleme haben, diesen einen Anbieter zu finden. Wenn Sie ErrorProvider verwenden möchten, um * auch * das gesamte Formular zu validieren, dann [berücksichtigen Sie dies] (https://stackoverflow.com/a/2682478/17034). –