是否有可能改变.activecontrol导致RemoveControl被调用?

本文关键字:RemoveControl 调用 导致 activecontrol 能改变 是否 | 更新日期: 2023-09-27 18:15:00

在_visibechange事件的某处我正在改变ActiveControl:

private void ResultNumeric_VisibleChanged(object sender, EventArgs e)
{
    if (this.Visible)
    {
        this.ActiveControl = this.resNumResult;
    }
}

现在如果我遵循程序的一个工作流程,我的应用程序会崩溃。我看了一下StackTrace,它有一个对REMOVE的调用,它会把Parent设置为null,实际上crash也来自一个地方,我在一个Parent上调用一个方法,这是null。

   at System.Windows.Forms.ContainerControl.AfterControlRemoved(Control control, Control oldParent)
   at System.Windows.Forms.SplitContainer.AfterControlRemoved(Control control, Control oldParent)
   at System.Windows.Forms.Control.ControlCollection.Remove(Control value) 

所以是这个变化的ActiveControl导致Remove方法被调用吗?

是否有可能改变.activecontrol导致RemoveControl被调用?

我不认为设置ActiveControl会从表单的ControlCollection中移除控件。错误一定是在别的地方。您是否在代码的其他地方删除了控件?