如何将textchanged事件添加到代码隐藏中的文本框中

时间:2011-07-05 19:11:07

标签: asp.net textbox

我通过后面的代码创建了一个文本框,但无法向其添加文本更改的事件 这就是我

 protected void insert(object sender, EventArgs e) 
{

}

protected void update(object sender, DayRenderEventArgs e) 
{
    TextBox tb = new TextBox();
    tb.TextChanged += "insert";

    e.Cell.Controls.Add(tb);

}

我试过这个,但它对我不起作用。 有什么问题,谢谢

2 个答案:

答案 0 :(得分:10)

如果要将处理程序绑定到代码隐藏中的事件,您实际执行的操作是编写处理程序本身的名称,而不是字符串

    protected void Page_Load(object sender, EventArgs e)
    {
        TextBox textBox = new TextBox();
        textBox.TextChanged += new EventHandler(textBox_TextChanged);
    }

    protected void textBox_TextChanged(object sender, EventArgs e)
    {
        // Your code here
    }

为了更清楚一点,想象一下C#有一个名为EventHandler的列表,每次文本框上的文本发生变化(客户端的模糊事件)时,C#都会执行该列表中的所有方法。现在,如何在该列表中添加方法?您使用+=运算符。现在,如果要添加两个处理程序,可以写:

    protected void Page_Load(object sender, EventArgs e)
    {
        TextBox textBox = new TextBox();
        textBox.TextChanged += new EventHandler(textBox_TextChanged);
        textBox.TextChanged += new EventHandler(textBox_TextChanged2);
    }

    protected void textBox_TextChanged(object sender, EventArgs e)
    {
        // This method is the first in the list. So gets executed first.
    }

    protected void textBox_TextChanged2(object sender, EventArgs e)
    {
        // This method is the second in the list.
    }

答案 1 :(得分:2)

您应该传递委托(方法本身)而不是字符串(方法的名称):

protected void update(object sender, DayRenderEventArgs e) 
{
    TextBox tb = new TextBox();
    tb.TextChanged += insert;

    e.Cell.Controls.Add(tb);
}