我正在做How do I prevent the user from changing the selected tab page in a TabControl?
中所述的事情事情进展顺利。但是如果我当前选择了tabpage1并且用户点击tabpage1本身,则会发生tabpage1的验证事件。以后当用户点击tabpage2时,tabpage1的验证事件不会触发。
如果我在验证tabpage1的事件时e.Cancel
会发生什么情况,在上述情况下,当用户错误地选择了tabpage1时,它会提示用户“你想留在当前吗?选项卡保存数据或从当前选项卡移动?“如果用户点击Stay
但没有做任何更改。然后,当他正确点击tabpage2时,tabpage1的验证事件未触发。
我上传了示例应用here。您可以运行并查看行为以正确理解问题
答案 0 :(得分:1)
这是验证应该行为的方式,它只是与表格的幸运匹配。
您可以使用选择/选定事件并自己编写更多逻辑。或者放弃任何一个标签页或者单独验证它们的想法。
答案 1 :(得分:1)
改为使用TabControl.Selecting Event
。
像这样使用:
tabControl1.Selecting += tabControl1_Selecting;
private void tabControl1_Selecting(object sender, TabControlCancelEventArgs e)
{
e.Cancel = !(can switch tab);
}