如何在设计时填充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或其他工具在设计器中手动执行此操作,通过选择表单中的一些控件。

实际上,设计器会自动给我一个编辑器,让我将新控件添加到这个列表中,那么我该如何告诉它,我想从所有现有的控件中进行选择呢?

我可以为这个编辑器设置一些东西吗?还是我需要一个自定义的编辑器?

如何在设计时填充list属性

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;
    }
}
相关文章: