如何在设计时填充list属性
本文关键字:填充 list 属性 | 更新日期: 2023-09-27 18:16:37
我有一个这样的组件:
public partial class FontScalingManager : Component
{
...other stuff...
/// <summary>
/// List of Controls, which get their Font scaled
/// </summary>
[ListBindable(BindableSupport.Yes),
Description("List of Controls, which get their Font scaled")]
public List<Control> ScalingControls
{
get { return _scalingControls; }
}
}
因此,在窗体上放置此组件后,我想在设计器中填充此列表。我更喜欢用UITypeEditor或其他工具在设计器中手动执行此操作,通过选择表单中的一些控件。
实际上,设计器会自动给我一个编辑器,让我将新控件添加到这个列表中,那么我该如何告诉它,我想从所有现有的控件中进行选择呢?
我可以为这个编辑器设置一些东西吗?还是我需要一个自定义的编辑器?
IExtenderProvider接口就是用来做这个的。. net HelpProvider组件就是这样实现的。注意它是如何向同一窗体上的其他控件添加属性的。使用MSDN库文章中的示例来获得如何正确实现它的基本指导。
控件有一个Tag
属性。将缩放控件的标签设置为"scaling"。然后在第一次访问它们时确定缩放控制:
private List<Control> _scalingControls;
public List<Control> ScalingControls
{
get
{
if (_scalingControls == null) {
_scalingControls = new List<Control>();
foreach (Control c in frm.Controls) {
if ((string)c.Tag == "scaling") {
_scalingControls.Add(c);
}
}
}
return _scalingControls;
}
}