当控件的名称以字符串形式已知时,在运行时查找该控件

本文关键字:控件 运行时 查找 字符串 | 更新日期: 2023-09-27 18:19:09

我动态创建了一个超链接

 Hyperlink objHyperlink = new Hyperlink();

根据键值,我需要将现有的超链接设置为objHyperlink

 if key == "Markets"
 then hyperlink to be set is  hyplnkIsActiveMarkets
 if key =="Budgets"
 then hyperlink to be set is  hyplnkIsActiveBudgets

我的问题是如何在运行时得到控制,我知道它的名字是"hyplnkIsActive"+"市场"("市场"是从键得到的)

der是否像FindControlByname("hyplnkIsActive"+"Markets");

当控件的名称以字符串形式已知时,在运行时查找该控件

试试这个

var myControl = (Control)this.FindName("Control Name");

如果你有一个所有可用超链接的列表,那么试试这个

Hyperlink FindLinkByName(IEnumerable<Hyperlink> links,string linkName)
{
  return links
        .FirstOrDefault
         ( 
            link => Equals(link.GetValue(FrameworkElement.NameProperty),linkName) 
         );
}

你可以这样命名它:

FindLinkByName(list of links, "hyplnkIsActive"+"Markets")

将创建的控件保存在具有键和对象的散列表中。这是fasted方法