4

想象一下TabControl,您可以在其中关闭TabPage并根据需要重新排序它们。您希望在关闭一个页面后重新分配先前选择的页面,因此您需要保留先前索引的记录。SelectedIndex您最后问自己:是否有可能在更改之前触发事件TabControl

然后您搜索由 提出的所有事件,TabControl您找到的最接近的事件是SelectedIndexChanged采用不EventArgs包含上一个索引信息的参数。

您还尝试使用OnClick事件记录先前的索引,但失败了,因为控件的关闭功能使这种方法变得不可能。

为什么这种方法是不可能的?因为当您关闭一个选项卡时,您也选择了它,所以您最终拥有SelectedIndex == PreviouIndex,Dispose()此页面并且根本没有选择任何选项卡。

所以你最终决定来这里问同样的问题:是否有可能在更改之前触发事件?如果不是,那么保留先前选择的索引的最佳方法是什么?SelectedIndexTabControl

4

1 回答 1

5

就像 LarsTech 建议的那样,我使用了取消选择并按照以下方式进行:

// Class definition ...
public TabPage PreviousTab { get; private set;}   
private void Deselecting(object sender, TabControlCancelEventArgs e)
{
if (e.TabPage != null)
PreviousTab = e.TabPage;
}
于 2013-06-06T18:47:13.827 回答