我创建了一个源自TextBox
的自定义文本框控件。
要添加设计器动词,我创建了一个附加到我的控件的设计器,但这样做会禁用System.Windows.Forms.Design.TextBoxDesigner
类附加的TextBox
中的所有现有设计器功能。
TextBoxDesigner
类设置为internal
,因此无法从中获取我的设计师。
我做错了什么?
是否有其他方法可以在不破坏现有功能的情况下将设计时功能添加到派生控件中?
答案 0 :(得分:0)
如果您没有找到其他替代方案,则可以在没有真正继承的情况下继承。
class ExtendedTextboxDesigner : ControlDesigner
{
public ExtendedTextboxDesigner()
{
var atts = (DesignerAttribute[])typeof(TextBox).GetCustomAttributes(
typeof(DesignerAttribute),
false);
var designer = (ControlDesigner)Activator.CreateInstance(
Type.GetType(atts[0].DesignerTypeName));
}
private ControlDesigner Base { get; set; }
public override bool CanBeParentedTo(IDesigner parentDesigner)
{
return Base.CanBeParentedTo(parentDesigner);
}
// ...
}
令人烦恼的是,您需要覆盖ControlDesigner
的每个方法和属性。