Вот метод расширения, чтобы получить все имена родителей как 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;
}
}
}
}
А вот свойство UserControl, который я добавил в проект, который будет использовать его :
public partial class CustomControl : UserControl
{
public CustomControl()
{
InitializeComponent();
}
public string ControlPath
{
get
{
return string.Join(@"\", this.GetControlPath().Reverse());
}
}
}
После построения, перетащите элемент управления пользователя на форму из панели инструментов. Не забудьте установить его внутри других элементов управления довольно хорошо. Я вложил 3 панели и поместил их в самую внутреннюю панель, похожую на ваш пример. Вот то, что свойства похожи на время проектирования:
Это должно быть применимо к любому классу вы делаете, что происходит от Control
. IExtenderProvider
не подходит.
'Control.Parent' может быть тем, что вы хотите. Не могли бы вы рассказать о концепции времени разработки, например, как установить строку в зависимости от времени разработки по сравнению с временем выполнения? –
@JeremyThompson ahh my bad ... Я имею в виду, что я не хочу использовать свойство tag для элемента управления для назначения пути управления тегами. Я хочу использовать Extender Class, поэтому в моей программе я хочу получить значение этого свойства (путь) –