想象一下,您有一个TabControl
,您可以在其中关闭TabPage
并按需要重新排序。您希望在关闭之后重新分配先前选择的页面,因此您需要保留以前索引的记录。你最后问自己:是否有可能在SelectedIndex
TabControl
更改之前触发事件?
然后搜索TabControl
提议的所有事件,找到的最接近的事件是SelectedIndexChanged
,其中EventArgs
参数不包含先前索引的信息。
您还尝试使用OnClick
事件记录上一个索引,但由于控件的关闭功能无法实现此方法而失败。
为什么这种方法不可能?因为当您关闭标签时,您也会选择它,因此您最终得到SelectedIndex == PreviouIndex
,Dispose()
此页面并且根本没有选择标签。
所以你最终决定来这里并提出同样的问题:是否有可能在SelectedIndex
TabControl
发生变化之前触发之前触发的事件? 如果不是,保留以前选择的索引的最佳方式是什么?
答案 0 :(得分:2)
像LarsTech建议的那样,我使用了Deselecting并继续如下:
// Class definition ...
public TabPage PreviousTab { get; private set;}
private void Deselecting(object sender, TabControlCancelEventArgs e)
{
if (e.TabPage != null)
PreviousTab = e.TabPage;
}