C#WinForms:当我调用TabPages的Clear()方法时:
tabControl.TabPages.Clear();
它还会触发SelectedIndexChanged事件
tabControl_SelectedIndexChanged
。但我不希望这样。当我调用Clear()时,有没有正式甚至是hackish方法来阻止这个被调用?我仍然希望每当用户点击选项卡时都会调用它,但我只是不希望它在其他地方自动调用我调用Clear()方法。
谢谢。
答案 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);
注意:强>
我没有尝试过这段代码,但它应该有用。