簡體   English   中英

如何在不禁用現有設計器功能的情況下將設計器動詞添加到控件?

[英]How do I add a designer verb to a control without disabling existing designer functionality?

我創建了一個從TextBox派生的自定義文本框控件。

要添加設計器動詞,我創建了一個附加到我的控件的設計器,但這樣做會禁用System.Windows.Forms.Design.TextBoxDesigner中的所有現有設計器功能,該設計器附加到TextBox ZA2F2ED4F8EBC06ABB4C21A2DDC

TextBoxDesigner class 設置為internal ,因此我也無法從中派生我的設計師。

我究竟做錯了什么?

是否有其他方法可以在不破壞現有功能的情況下將設計時功能添加到派生控件?

如果您找不到其他選擇,您可以在沒有真正繼承的情況下繼承。

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的每個方法和屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM