这是一个扩展方法让所有的父母的名字作为一个IEnumerable<string>
:
public static class Extensions
{
public static IEnumerable<string> GetControlPath(this Control c)
{
yield return c.Name;
if (c.Parent != null)
{
Control parent = c.Parent;
while (parent != null)
{
yield return parent.Name;
parent = parent.Parent;
}
}
}
}
这里是我加入到项目中的用户控件的属性,将利用它:
public partial class CustomControl : UserControl
{
public CustomControl()
{
InitializeComponent();
}
public string ControlPath
{
get
{
return string.Join(@"\", this.GetControlPath().Reverse());
}
}
}
建立之后,拖动用户控制到从工具箱中的窗体。一定要将它嵌入到其他控件中很不错。我嵌套3个面板,并将其放置在最类似于您的示例的面板中。这里的性质是什么样子,在设计时间:
这应该是适用于你从中赚取Control
派生的任何类。 IExtenderProvider
似乎无关紧要。
'Control.Parent'可能是你想要的。您能否详细说明设计阶段的概念 - 比如设置字符串与设计时间相比运行时间有什么不同? – 2013-05-09 22:12:25
@JeremyThompson啊我的坏...我的意思是我不想使用Control的标签属性来分配标签属性控制路径。我想使用Extender类,所以在我的程序中我想获取该属性的值(路径) – 2013-05-09 22:17:51