我有一些验证逻辑和一个TabControl。我想阻止用户在当前包含某些错误时切换标签。
我发现有些人问同样的问题,有些人给出了很好的答案,你可以在这里看到。
TabControl- preventing user from changing the selected tab: MessageBox causing bug
然而,正如Fredrik Hedblad所说,当取消选择时显示MessageBox时,整个事情就会崩溃。它经历了一种奇怪的行为。事件停止被提升(显然),如果你最小化并恢复窗口,它突然升起而没有交互!!
有人可以对此有所了解吗?非常感谢!!!
这里我已经设置了一个带有问题的Visual Studio解决方案。它有MainWindow.cs中的代码。真的很简单,但不起作用。尝试两次单击某个选项卡(在对话框显示之后),您会注意到它没有再显示对话框,但如果您最小化并恢复,则会自动显示对话框并选择选项卡!
答案 0 :(得分:1)
在验证逻辑中,将其他TabItem Visibility
属性设置为Collapsed
要么是IsEnabled
要么是假。
我猜你的验证逻辑中有IsDirty
种属性,对吗?然后你们都清楚了!
答案 1 :(得分:0)
尝试使用此代码:
bool isError=true;
private void tabControl1_Selecting(object sender, TabControlCancelEventArgs e)
{
if (isError)
{
e.Cancel = true;
}
}
当标签页出错时,isError是bool变量集。