0

我有一些验证逻辑和一个 TabControl。我想防止用户在当前选项卡包含一些错误时切换选项卡。

我发现有些人问同样的问题,有些人给出了很好的答案,你可以在这里看到。

TabControl-防止用户更改选定的选项卡:MessageBox 导致错误

然而,正如 Fredrik Hedblad 所说,当取消选择时显示 MessageBox 时,整个事情都会崩溃。它经历了一种奇怪的行为。该事件(显然)停止引发,如果您最小化并恢复窗口,它会突然引发而没有交互!

有人可以对此有所了解吗?非常感谢!!!

在这里,我设置了一个解决问题的 Visual Studio 解决方案。它在 MainWindow.cs 中有代码。真的很简单,但行不通。尝试单击某个选项卡两次(在对话框显示后),您会注意到它不再显示对话框,但如果您最小化并恢复,对话框会自动显示并且选项卡已选择!

带有示例解决方案的 ZIP 文件 (Visual Studio 2012

4

2 回答 2

1

在您的验证逻辑中,将其他 TabItemsVisibility属性设置为Collapsed
Either that 或IsEnabledfalse。

我猜你IsDirty的验证逻辑中有一种属性,对吧?那你们就清楚了!

于 2013-10-02T21:36:26.147 回答
0

尝试使用此代码它可以工作:

bool isError=true;
private void tabControl1_Selecting(object sender, TabControlCancelEventArgs e)
        {
            if (isError)
            {
                e.Cancel = true;
            }            
        }

其中 isError 是标签页发生错误时设置的布尔变量。

于 2013-10-03T10:36:53.453 回答