私はウェブを見回しており、トピックに関する記事をいくつか見つけましたが、それらの違いはまだわかりません. 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 の違いは何ですか?