我試圖在文本框中使用此自定義方法進行用戶輸入驗證。但是我在這裏看到了一些缺失,因爲現在我無法將(焦點)移動到窗體中的下一個文本框!使用TextBox_Validating事件進行用戶輸入驗證
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 = false;
}
else
{
e.Cancel = true;
}
}
添加處理程序與形式構造foreach循環的文本框:
foreach(TextBox tb in this.Controls.OfType<TextBox>().Where(x => x.CausesValidation == true))
{
tb.Validating += textBox_Validating;
}
這是預期的行爲 - [Control.Validating事件](http://msdn.microsoft.com/en-us/library/system .windows.forms.control.validating%28v = vs.110%29.aspx) – Anuraj
'if'中有一個錯誤。應該是這樣的> if(currenttb.Text ==「」) { MessageBox.Show(string.Format(「Empty field {0}」,currenttb.Name.Substring(3))); e.Cancel = true; } – CAD
如果您設置e.Cancel = true,表示驗證失敗,則不允許更改焦點 – Anuraj