所以,我的问题是我有很多动态地从数据库创建的文本框(x字段代表两个文本框),我想为所有人处理相同的事件Textchanged。
但是当我将字符放在文本框中时,会为具有此事件的所有文本框启动该事件。
以下是我如何声明我的文本框:
TextBox x = new TextBox();
x.ID = "txtX" + reader.GetInt32(0);
x.Text = "x";
x.Width = Unit.Pixel(50);
x.AutoPostBack = true;
x.TextChanged += txtBoxTextChanged;
TextBox y = new TextBox();
y.ID = "txtY" + reader.GetInt32(0);
y.Text = "y";
y.Width = Unit.Pixel(50);
y.AutoPostBack = true;
y.TextChanged += new EventHandler(txtBoxTextChanged);
这是我的事件txtBox:
protected void txtBoxTextChanged(object sender, EventArgs e)
{
TextBox txt = (sender as TextBox);
Response.Write("<script>alert(\""+ txt.ID +" a pour valeur : "+ txt.Text +"\");</script>");
}
那么,我怎样才能找到触发事件的控件?
感谢您的帮助
答案 0 :(得分:0)
事件调用中的第一个参数是发件人。所以你有控件导致事件。
答案 1 :(得分:0)
可以为每个文本框添加名称属性,例如
TextBox x = new TextBox();
x.Name = "t1";
并且在偶数处理程序内部,您可以检查该名称,这将允许您识别触发事件的文本框。
TextBox txt = (sender as TextBox);
var name = txt.Name;
答案 2 :(得分:0)
我发现了我的错误。
当我创建文本框时,我放了一个文字&#39; X&#39;或者&#39; Y&#39;。当事件触发时,所有文本框都有文本,这就是为什么它第一次没有工作,但之后,它可以工作。
感谢大家的帮助和建议。