当我们调用TabPages.Clear()时阻止调用SelectedIndexChanged()方法

时间:2012-04-11 16:06:09

标签: c# winforms

C#WinForms:当我调用TabPages的Clear()方法时:

tabControl.TabPages.Clear();

它还会触发SelectedIndexChanged事件

tabControl_SelectedIndexChanged

。但我不希望这样。当我调用Clear()时,有没有正式甚至是hackish方法来阻止这个被调用?我仍然希望每当用户点击选项卡时都会调用它,但我只是不希望它在其他地方自动调用我调用Clear()方法。

谢谢。

2 个答案:

答案 0 :(得分:2)

正如萨尼评论的那样,这是一个简单的工作:

tabControl.SelectedIndexChanged -= tabControl_SelectedIndexChanged;
tabControl.TabPages.Clear();
tabControl.SelectedIndexChanged += tabControl_SelectedIndexChanged;

答案 1 :(得分:2)

除了我发表的评论之外,您还可以将其作为扩展方法:

public static void ClearAllTabPages(this TabControl tc, EventHandler eh)
{
  tc.SelectedIndexChanged -= eh;
  tc.TabPages.Clear();
  tc.SelectedIndexChanged += eh;
}

现在,您不需要记住在要清除TabPages的每个位置取消挂钩并重新挂钩事件处理程序。你只需致电:

tabControl.ClearAllTabPages(tabControl_SelectedIndexChanged);

注意:
我没有尝试过这段代码,但它应该有用。