winforms 拆分容器被识别为ActiveControl

polkgigr  于 2022-11-17  发布在  其他
关注(0)|答案(3)|浏览(108)

在我的窗体中,我有两个拆分容器、一些面板、ActiveX控件和其他Windows窗体控件,如按钮、复选框等。现在在我所说的代码中

Control activeControl = this.ActiveControl;
        MessageBox.Show(activeControl.Name);

但是它总是返回splitcontainer1作为activeCnottrl。我应该如何获得ActiveControl

btxsgosb

btxsgosb1#

假设“this”是表单,当您呼叫this.ActiveControl时,它会直接在表单(this)上寻找作用中的控件。您可能必须执行下列动作:

this.splittercontainer1.ActiveControl
ggazkfy8

ggazkfy82#

我遇到了同样的问题,我通过检查控件是否是拆分容器,然后检查拆分容器内的活动控件来解决它。

if (ActiveControl.GetType() == typeof(SplitContainer))
{
    var containerControl = (SplitContainer)ActiveControl;
    if (containerControl.ActiveControl is MemoEdit)
    {
         //Do something
    }
}
gr8qqesn

gr8qqesn3#

下面是我的通用解决方案,它应该处理任何嵌套的容器控件。

var control = this.ActiveControl;

while (control is ContainerControl container)
{
    control = container.ActiveControl;
}

var actualActive = control;

相关问题