【发布时间】:2016-05-11 14:02:30
【问题描述】:
我创建了许多从基本控件派生的控件。作为这些扩展控件的一部分,我添加了许多属性。其中一个属性是一个唯一 ID,它可以帮助我将其绑定到数据库值。
我需要能够通过 UniqueID 搜索此控件,这是只有我的派生控件具有的属性(请注意,表单上的所有控件都是我的派生控件,并且所有控件都具有 UniqueID 作为属性)。反思跳到脑海,但我找不到一个例子。
【问题讨论】:
我创建了许多从基本控件派生的控件。作为这些扩展控件的一部分,我添加了许多属性。其中一个属性是一个唯一 ID,它可以帮助我将其绑定到数据库值。
我需要能够通过 UniqueID 搜索此控件,这是只有我的派生控件具有的属性(请注意,表单上的所有控件都是我的派生控件,并且所有控件都具有 UniqueID 作为属性)。反思跳到脑海,但我找不到一个例子。
【问题讨论】:
使用Enumerable.OfType<T> 过滤掉特定类型的控件,然后您可以查询特定属性,例如:
var controls = this.Controls.OfType<YourControl>().Where(r => r.UniqueId == someValue);
请记住,这只搜索根级别的控件,如果您对查找嵌套控件感兴趣,则必须使用递归方法。见:How to get ALL child controls of a Windows Forms form of a specific type (Button/Textbox)?
【讨论】:
Control基类那么它不仅限于你上面指定的类,它还将包括其他控制类,像按钮等。