我有一个像这样的组件:
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; }
}
}
因此,在Form上删除此Component后,我想在设计器中填写此列表。我更喜欢在设计器中使用UITypeEditor或其他方法手动执行此操作,方法是选择表单中的某些控件。
按原样,设计师会自动给我一个编辑器来添加新的控件到这个列表,所以如何设法告诉它,我想从所有现有的控件中进行选择?
我可以为该编辑器设置一些内容,还是需要自定义编辑器?
感谢每一位帮助。
答案 0 :(得分:2)
IExtenderProvider接口是为了做到这一点。 .NET HelpProvider组件以这种方式实现。请注意它如何将属性添加到同一表单上的其他控件。使用MSDN Library文章中的the example可以获得有关如何正确实现它的基本指导。
答案 1 :(得分:0)
控件具有Tag
属性。将标记设置为缩放控件的“缩放”。然后在第一次访问它们时确定缩放控件:
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;
}
}