Se non fossimo in asp.net la risposta alla domanda sarebbe questa:
codice:
//versione compatta con la lambda (nel caso di un handlar di poche righe)
tbx.TextChanged += (s,e) => {
//codice dell'evento
}
//versione normal
tbx.TextChanged += DinamicTextboxChangedHandler;
//dove DinamicTextboxChangedHandler è una private con la firma di un event handler:
private void DinamicTextboxChangedHandler(object sender, Eventargs e)
{
//Codice evento
}
Solo che tu hai anche un altro problema, siamo in asp.net e ad ogni postback tu perdi le textbox che crei dinamicamente perciò quando crei la textbox devi salvartele in session( le proprietà piu importanti non l'intero oggetto) e ricrearle ad ogni postback.