TabControl 取消更改标签页

9

当用户更改选项卡时,我正在使用TabControl_SelectedIndexChanged事件。 TabControl.SelectedIndex / TabControl.SelectedTab仅返回新选项卡。有没有办法可以得到先前的选项卡?还是必须坚持明显的每次更改选项卡时存储当前选项卡?

我想在特定条件下使用它来取消选项卡的更改,例如存在未保存的更改。


你必须在每次更改时存储它...在“SelectedIndexChange”的开始处,只需存储它...没有其他方法 :/ - Ivan Crojach Karačić
3个回答

22

如果你想要取消一个标签页的更改,可以使用 Deselecting 事件。在那里,你可以通过将提供的 TabControlCancelEventArgs 的属性 Cancel 设置为 true 来取消更改。


5
如果您想预览即将选择的选项卡并希望能够取消它,请使用“选择”。 - Oliver Bock

3

1
“TabControl_Deselecting” 正是我正在寻找的!谢谢! - Gerhard Powell

2
我使用了tabControl的Selected方法来防止用户选择某个选项卡,换句话说,禁用了一个选项卡页。
TabPage currentPage;

private void tabControl1_Selected(object sender, TabControlEventArgs e)
{
    if (e.TabPage == tabNotAllowed)
    {
        tabControl1.SelectedTab = currentPage;
        MessageBox.Show("You cannot use the tab you selected.");
    }
    else
    {
        currentPage = e.TabPage;
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接