C# TabPage单击当前选定选项卡时验证事件触发
我正在做的事情正如在 事情进展顺利。但是,如果当前已选中tabpage1,并且用户单击tabpage1本身,则会发生tabpage1的验证事件。稍后,当用户单击tabpage2时,tabpage1的验证事件不会触发 如果我在tabpage1的验证事件中执行C# TabPage单击当前选定选项卡时验证事件触发,c#,winforms,tabcontrol,tabpage,C#,Winforms,Tabcontrol,Tabpage,我正在做的事情正如在 事情进展顺利。但是,如果当前已选中tabpage1,并且用户单击tabpage1本身,则会发生tabpage1的验证事件。稍后,当用户单击tabpage2时,tabpage1的验证事件不会触发 如果我在tabpage1的验证事件中执行e.Cancel,则在上述情况下,当用户错误地单击tabpage1并选择了tabpage1时,它将提示用户“您想留在当前选项卡上保存数据还是从当前选项卡移动?”。如果用户单击停留,但不做任何更改。然后,当他正确单击tabpage2时,tabpa
e.Cancel
,则在上述情况下,当用户错误地单击tabpage1并选择了tabpage1时,它将提示用户“您想留在当前选项卡上保存数据还是从当前选项卡移动?”。如果用户单击停留
,但不做任何更改。然后,当他正确单击tabpage2时,tabpage1的验证事件不会触发
我已经上传了示例应用程序。您可以运行并查看行为以正确理解问题这是验证应该如何运行的关键,只是与tabpages不匹配 您可以使用Selecting/Selected事件并自己编写更多的逻辑。或者放弃标签页,或者放弃它们需要单独验证的想法 改用
像这样使用它:
tabControl1.Selecting += tabControl1_Selecting;
private void tabControl1_Selecting(object sender, TabControlCancelEventArgs e)
{
e.Cancel = !(can switch tab);
}
不需要留下任何想法或标签页。选择事件就可以了。顺便说一句,我取消选择事件将工作得很好。感谢@Jens GranlundThanks提供的链接。我将使用取消选择事件。