9

私はウェブを見回しており、トピックに関する記事をいくつか見つけましたが、それらの違いはまだわかりません. CompositeControl から継承した場合は完全に機能しますが、WebControl から継承した場合は機能しません。(どちらもコードをレンダリングしますが、CompositeControl だけがイベントを処理します)

using System;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace TestLibrary
{
    public class TemplateControl : CompositeControl
    {
        TextBox txtName = new TextBox();
        TextBox txtEmail = new TextBox();
        Button btnSend = new Button();

        private void SetValues()
        {
            btnSend.Text = "Skicka";
        }

        protected override void CreateChildControls()
        {
            SetValues();

            this.Controls.Add(new LiteralControl("Namn: "));
            this.Controls.Add(txtName);
            this.Controls.Add(new LiteralControl("<br />"));
            this.Controls.Add(new LiteralControl("Email: "));
            this.Controls.Add(txtEmail);
            this.Controls.Add(new LiteralControl("<br />"));
            btnSend.Command += new CommandEventHandler(btnSend_Command);
            this.Controls.Add(btnSend);
        }

        void btnSend_Command(object sender, CommandEventArgs e)
        {
            this.Page.Response.Write("Du har nu klickat på skicka-knappen! <br /><br />");                
        }
    }
}

そのため、ボタンをクリックしてコントロールが WebControl としてレンダリングされても、何も起こりません。しかし、WebControl を CompositeControl に変更すると、テキストが出力されます。なんで?WebControl と CompositeControl の違いは何ですか?

4

2 に答える 2

0

UserControl、WebControl、RenderedControl、および CompositeControl の違いは何ですか?

ある人が他の人と異なる振る舞いをするのはなぜですか? 種類が違うからです。同じタイプなら二人はいない。

于 2009-10-16T14:51:23.017 に答える