public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.CheckBox CheckBox1;
    public  delegate  void d(object sender,System.EventArgs e);
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!Page.IsPostBack)
{

}

TestDelagate1();
} private void cb_CheckedChanged(object sender,System.EventArgs e)
{

CheckBox ck=(CheckBox)sender;
if(ck.Checked==true)
Response.Write("click");
}
private void TestDelagate1()
{

CheckBox cb=new CheckBox();
cb.ID="cd111";
cb.AutoPostBack=true;
cb.Checked=false;
// d ddd=null;
// ddd +=new d(cb_CheckedChanged);
cb.CheckedChanged+=new EventHandler(cb_CheckedChanged);//这样写就会触发事件 但是我如果用我自己声明的委托就不行 为什么 应该怎么写才能用自己的委托?!!! this.Page.Controls[1].Controls.Add(cb);
             

}

解决方案 »

  1.   

    首先委托和事件不是一个概念如果自定义事件可以查MSDN
    namespace TestCollections
    {
        // A class that works just like ArrayList, but sends event
        // notifications whenever the list changes:
        public class ListWithChangedEvent : System.Collections.ArrayList
        {
            // An event that clients can use to be notified whenever the
            // elements of the list change:
            public event System.EventHandler Changed;        // Invoke the Changed event; called whenever list changes:
            protected virtual void OnChanged(System.EventArgs e)
            {
                if (Changed != null)
                {
                    Changed(this, e);
                }
            }        // Override some of the methods that can change the list;
            // invoke event after each:
            public override int Add(object value)
            {
                int i = base.Add(value);
                OnChanged(System.EventArgs.Empty);
                return i;
            }        public override void Clear()
            {
                base.Clear();
                OnChanged(System.EventArgs.Empty);
            }        public override object this[int index]
            {
                set
                {
                    base[index] = value;
                    OnChanged(System.EventArgs.Empty);
                }
            }
        }
    }namespace TestEvents
    {
        using TestCollections;    class EventListener
        {
            private ListWithChangedEvent m_list;        public EventListener(ListWithChangedEvent list)
            {
                m_list = list;            // Add "ListChanged" to the Changed event on m_list:
                m_list.Changed += new System.EventHandler(ListChanged);
            }        // This will be called whenever the list changes:
            private void ListChanged(object sender, System.EventArgs e)
            {
                System.Console.WriteLine("This is called when the event fires.");
            }        public void Detach()
            {
                // Detach the event and delete the list:
                m_list.Changed -= new System.EventHandler(ListChanged);
                m_list = null;
            }
        }    class Test
        {
            // Test the ListWithChangedEvent class:
            static void Main()
            {
                // Create a new list:
                ListWithChangedEvent list = new ListWithChangedEvent();            // Create a class that listens to the list's change event:
                EventListener listener = new EventListener(list);            // Add and remove items from the list:
                list.Add("item 1");
                list.Clear();
                listener.Detach();
            }
        }
    }
    这个是MSDN的例子,希望楼主能多利用MSDN