虽然其他方法可能有效,但 Validating 事件是专门为此设计的。
这是它的工作原理。When the SelectedIndex of the tab control changes, set the focus to the newly selected page and as well as CausesValidation = true. 这样可以确保在用户尝试以任何方式离开选项卡时调用 Validating 事件。
然后在页面特定的验证事件中进行正常验证,并在需要时取消。
您需要确保在 Form Shown 事件中设置初始选定的选项卡页(Form_Load 将不起作用),并连接特定于选项卡页的验证事件。
这是一个例子:
private void Form_Shown(object sender, System.EventArgs e)
{
// Focus on the first tab page
tabControl1.TabPages[0].Focus();
tabControl1.TabPages[0].CausesValidation = true;
tabControl1.TabPages[0].Validating += new CancelEventHandler(Page1_Validating);
tabControl1.TabPages[1].Validating += new CancelEventHandler(Page2_Validating);
}
void Page1_Validating(object sender, CancelEventArgs e)
{
if (textBox1.Text == "")
{
e.Cancel = true;
}
}
void Page2_Validating(object sender, CancelEventArgs e)
{
if (checkBox1.Checked == false)
{
e.Cancel = true;
}
}
private void tabControl1_SelectedIndexChanged(object sender, System.EventArgs e)
{
// Whenever the current tab page changes
tabControl1.TabPages[tabControl1.SelectedIndex].Focus();
tabControl1.TabPages[tabControl1.SelectedIndex].CausesValidation = true;
}