C# ParentForm.ActiveControl.Name

C# ParentForm.ActiveControl.Name

if (Operators.CompareString(this.ParentForm.ActiveControl.Name, this.Name, false) == 0)
{
base.Focus();
}

根据我在 VB6 中的经验,上面的代码不起作用,因为如果用户没有更改为相同的名称,它们永远不会相等。

从示例中,用户控件名称是ucCalendar,当我拖动到我的From时,名称会自动更改为ucCalendar1,即使我可以更改为ucCalendar,但通常我们不会这样做。

我认为编码人员想比较 UserControl 是 Form 上的唯一控件还是 ActiveControl,以便他可以强制聚焦它。 我不知道这个 C# 是否有效。请告诉我。

WinForms 代码中没有任何内容规定两个控件不能同名。您认为那是因为您是从设计器的角度来看它的,当您使用设计器时,它不会让您拥有两个具有相同名称的控件,只是因为它在代码中将那里用作它们的字段名称,正如您可能知道的那样,在同一范围内不能有两个同名的字段/属性/变量。事实上,ControlName 属性 没有必要成为任何东西。