我有验证事件。
private void EmployeeIDtextBox_Validating(object sender, CancelEventArgs e)
{
if (EmployeeIDtextBox.Text == "")
{
MessageBox.Show("Please Enter EmployeeID.", "Invalid EmployeeID");
}
}
并将我的cancelbutton causevalidation设置为false但是当我点击取消按钮时,消息框仍会显示。
答案 0 :(得分:0)
您需要将Cancel按钮层次结构中所有控件的CausesValidation属性设置为false。
例如:Form1包含Panel1,Panel1包含取消按钮。您需要将Form1,Panel1和Cancel按钮的CausesValidation属性设置为false。
CausesValidation是Control类的属性。详细了解here
如果CausesValidation为true,则控件允许触发验证事件,这是默认值。
如果层次结构中的控件具有ReasonValidation为true并且在您单击取消按钮之前它们会获得焦点,则将触发验证事件。
为了避免在panel1中的控件到处禁用它,你应该使用单独的面板或者不使用取消按钮。
希望它有所帮助。
修改强>: 我检查了我的结局。移动到取消按钮时,无论哪个控件获得焦点,都应该使CausesValidation为false。
将TextBox层次结构的CausesValidation设置为false,但TextBox本身除外。
答案 1 :(得分:0)
bool IsCancelBtnClicked = false;
private void EmployeeIDtextBox_Validating(object sender, CancelEventArgs e)
{
if (EmployeeIDtextBox.Text == "")
{
MessageBox.Show("Please Enter EmployeeID.", "Invalid EmployeeID");
}
}
private void button3_Click(object sender, EventArgs e)
{
IsCancelBtnClicked = true;
EmployeeIDtextBox.Validating -= new CancelEventHandler(textBox4_Validating);
this.Close();
}