SplitContainer被识别为ActiveControl
本文关键字:ActiveControl 识别 SplitContainer | 更新日期: 2023-09-27 17:58:45
在我的表单中,我有两个拆分容器和一些面板、ActiveX控件和其他Windows窗体控件,如按钮、复选框等
Control activeControl = this.ActiveControl;
MessageBox.Show(activeControl.Name);
但它总是将splitcontainer1作为activeCnotrl返回。我应该如何获得ActiveControl
?
假设"this"是表单,当您调用this.ActiveControl
时,它会直接在表单上查找活动控件(this)。你可能需要做一些事情,比如:
this.splittercontainer1.ActiveControl
我也遇到了同样的问题,我通过检查控件是否是Splitcontainer,然后检查Splitcontainer内的活动控件来解决这个问题。
if (ActiveControl.GetType() == typeof(SplitContainer))
{
var containerControl = (SplitContainer)ActiveControl;
if (containerControl.ActiveControl is MemoEdit)
{
//Do something
}
}
这是我的通用解决方案,应该可以处理任何嵌套的容器控件。
var control = this.ActiveControl;
while (control is ContainerControl container)
{
control = container.ActiveControl;
}
var actualActive = control;