我有一个不允许空值的文本框。所以我处理了textbox的验证事件。我的代码是
private void nullNotAllowed(object sender, System.ComponentModel.CancelEventArgs e)
{
TextBox txtMain = (TextBox)sender;
if (txtMain.Text == "")
{
errorProvider1.SetError(txtMain, "error");
e.Cancel = true;
}
else
{
errorProvider1.SetError(txtMain, String.Empty);
e.Cancel = false;
}
}
现在当我的文本框具有空值并按我的选项卡时,errorprovider会弹出并正常工作,甚至焦点也不会丢失。但是现在当我更正我的值并按Tab键时,此时焦点会丢失,但错误提供程序仍然只在那里。
请记住,我的文本框位于面板中,面板位于tabControl中,tabcontrol位于表单中。
答案 0 :(得分:1)
您应该清除Validate事件处理程序中的错误。
请参阅此处(MSDN)的示例和说明,有关于焦点的特殊警告...
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.validating.aspx