0

ASP-UserControlQuestionWithAnswer (.ascx) : BaseQuestion : UserControl と ControlDesignerがありQuestionDesigner : UserControlDesignerます。次に、DesignerAttribute を使用してコントロールとデザイナーを関連付けます。

[Designer(typeof(QuestionDesigner))]
public class BaseQuestion : UserControl

すべてのタイプが同じアセンブリ (WEB アプリケーション) にあります。しかし、それは私の代わりに UserControlDesigner をロードします。デザイナーを別のアセンブリに配置する必要がありましたか? asp-page デザイナーがデザイナーを見つけられないと思います。

どうも!モ


デモコード:

public class FragenDesigner : UserControlDesigner
{
    private DesignerActionList _actionList;
    private DesignerVerb[] _verbs;

    public override DesignerActionListCollection ActionLists
    {
        get
        {
            if (_actionList == null)
            {
                _actionList = new DesignerActionList(new System.Windows.Forms.TextBox());
                _actionList.AutoShow = true;


                ActionLists.Add(_actionList);
            }
            return base.ActionLists;
        }
    }

    public override DesignerVerbCollection Verbs
    {
        get
        {
            if (_verbs == null)
            {
                _verbs = new DesignerVerb[]
                         {
                             new DesignerVerb("test", onblabla), 
                         };

                Verbs.AddRange(_verbs);
            }

            return base.Verbs;
        }
    }

    private void onblabla(object sender, EventArgs e)
    {
        MessageBox.Show("blabla");
    }
}
4

1 に答える 1

1

わかりました、既に答えがあります: http://msdn.microsoft.com/en-us/library/system.web.ui.design.usercontroldesigner.aspx

備考

UserControlDesigner から派生した独自のデザイナーを作成することには、開発者の利点はありません。カスタム コントロールのデザイン時のエクスペリエンスを強化するには、CompositeControl からコントロールを派生させ、CompositeControlDesigner からデザイナーを派生させます。その場合、ASP.NET マークアップに .ascx ファイルは使用しません。

私の場合、CompositeControls に変更する可能性はありません。私を信じてください、私は複合/WebControlsを好みます...

于 2010-02-26T13:50:05.603 に答える