Why you code "public void sb2_Click(object sender, System.EventArgs e)"? Maybe you need to change "sb2_Click" to "Btn1_Click".

解决方案 »

  1.   

    哦,抱歉,确实是Btn1_Click,只是我的手误。
    不过问题仍然。:)
      

  2.   

    应该是首先new 出textbox实例。你这样写控件肯定是不会激发事件了,因为对象根本就不存在啊,这可是服务器端控件,而不是客户端控件。相关的例子在快速入门中可以找到。
      

  3.   

    我在InitializeComponent()中写过了。
    MS的快速入门网站好象有问题,总是出错。 :(
      

  4.   

    首先你要建立起面向对象的思想,按照快速入门的安装说明重新配置你的快速入门。在页面中呈现一个“服务器端 ”控件的过程应该是这样的:
    TextBox box=new TextBox();
    Page.Controls.Add(box);
      

  5.   

    可是我只是重写了Render()方法时呈现一个按钮:
    output.Write("<input type= submit name =button1 value= '搜索' runat=server>");
    ,而CreateChildControls()方法和Render()不能同时处理,如果同时存在,就略CreateChildControls()方法无效了。
      

  6.   

    呈现一个按钮来响应他的事件,没有做。我做组件使用重写Render()方法,一般是为了响应javascript脚本。
    不过使用CreateChildControls()方法就可以,不用重写Render()
    CreateChildControls()
    {
    System.Web.UI.WebControls.Button button1=new Button(); 
    button1.Click += new System.EventHandler(this.button1_Click);
    Controls.Add(button1);
    }
    public void button1_Click(object sender, System.EventArgs e)
    {
       System.Web.UI.WebControls.Button button1=(Button)this.Controls[3];  // 
       //...一些功能
    }
      

  7.   

    我重写Render就是为了,能直接显现出Button按钮的。
    上面的方法在重写Render就没有了。
      

  8.   

    使用CreateChildControls()方法,强制显示控件得重写
    Render方法,加上这个:
    protected override void Render(HtmlTextWriter output)
    {
    EnsureChildControls();
    base.Render(output);
    }
      

  9.   

    仍然出错啊,没有反应。好象事件还是没有激活成功嘛。代码如下:
    protected override void CreateChildControls()
    {
    System.Web.UI.WebControls.Button button1=new Button(); 
    button1.id="btn1";
    button1.Text="按我";
    button1.Click += new System.EventHandler(this.button1_Click);
    Controls.Add(button1);
    }public void button1_Click(object sender,EventArgs e) 
    {
     Button btn1=(Button)this.FindControl("btn1");
     btn1.Text="成功";
    }