Eine weitere Option wäre, das Validating
Ereignis abzuwickeln:
private void textBox_Validating(object sender, CancelEventArgs e)
{
TextBox currenttb = (TextBox)sender;
if(currenttb.Text == "")
MessageBox.Show(string.Format("Empty field {0 }",currenttb.Name.Substring(3)));
e.Cancel = true;
else
{
e.Cancel = false;
}
}
Das Hinzufügen des Handlers zu den Textfeldern kann leicht mit einer foreach-Schleife im Formularkonstruktor erfolgen:
foreach(TextBox tb in this.Controls.OfType<TextBox>().Where(x => x.CausesValidation == true))
{
tb.Validating += textBox_Validating;
}
Jetzt kann der Benutzer ein Textfeld nicht leer lassen. Der Handler gibt den Fokus wieder in das Textfeld zurück. Um ein Textfeld von der Überprüfung auszuschließen, setzen Sie die CausesValidation
Eigenschaft einfach auf false.