protected override void CreateChildControls()
{
    base.CreateChildControls ();   
    ...........
    Button btnTemplate = new Button() ;
    btnTemplate.ID = "Template " ;
    btnTemplate.Text = "选择数据项" ;
    btnTemplate.Click += new System.EventHandler(btnTemplate_Click);
    this.Controls.Add (btnTemplate) ;
    ............
}private void btnTemplate_Click(object sender,System.EventArgs e)
{
    ...........
    Button btnSave = new Button() ;
    btnSave.ID = "Template " ;
    btnSave.Text = "保存数据项" ;
    btnSave.Click += new System.EventHandler(btnSave_Click);
    this.Controls.Add(btnSave);
    ...........
}private void btnSave_Click(object sender,System.EventArgs e)
{
    ...............
}问题是,在引用该控件的页面上,不能触发btnSave按钮?:(...在线等待

解决方案 »

  1.   

    你订阅了btnSave的click事件,也就是说当你的btnSave执行click事件的时候,你的btnSvae_Click就会触发。由于你没有触发btnSave的click事件,所以也就不会执行btnSave_Click事件,这是我的理解
      

  2.   

    private void btnTemplate_Click(object sender,System.EventArgs e)
    {
        btnSave_Click(this,e);
    }
    貌似加个这个就可以了(注:还没研究懂托管代码,错了不许耻笑俺)
      

  3.   

    你写的这段代码真没意思.
    Click += 必须放在CreateChildControls事件中才能起作用.才能记录状态.
    另外我怀疑你在btnSave_Click事件中还写了
        Button btnSave1 = new Button() ;
        btnSave1.ID = "Template1 " ;
        btnSave1.Text = "保存数据项" ;
        btnSave1.Click += new System.EventHandler(btnSave1_Click);
        this.Controls.Add(btnSave1);
    这样的事件.
    这样真的不好.谢谢.