如下代码:

    private void tabControl_ControlRemoved(object sender, ControlEventArgs e)
    {
        MessageBox.Show(tabControl.TabCount.ToString());
    }


我假设应该告诉我在关闭最后一个选项卡后TabControl中没有控件(选项卡页)。但相反,它告诉我有1。

这是TabControl.ControlRemoved的预期行为,还是某种错误?

最佳答案

这只是一个执行顺序问题。在触发ControlRemoved事件之后,TabCount属性才会更新。这些问题在事件中相当普遍。

您可以通过在引发事件并完成所有处理之后执行代码来解决此问题:

    private void tabControl1_ControlRemoved(object sender, ControlEventArgs e) {
        this.BeginInvoke(new Action(() => {
            MessageBox.Show(tabControl1.TabCount.ToString());
        }));
    }

关于c# - TabControl.ControlRemoved的预期行为是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18453971/

10-13 03:13