2010-02-09 195 views
1

我需要为文本框1个事件添加到我的网页上(在ASP.NET中使用C#创建的),我是在Page_Load功能,为ASP语法声明:文本更改事件不会触发

protected void Page_Load(object sender, EventArgs e) 
    { 
     textbox1.TextChanged += new EventHandler(textbox1_TextChanged); 
    } 

public void textbox1_TextChanged(object sender, EventArgs e) 
{ 
    if (textbox1.Text == "ABCD") 
    { 
     Image1.Visible = true; 
     textbox1.Enabled = false; 
    } 
} 

进入ASP页我用这个语句:

<asp:TextBox Width="200" ID="textbox1" runat="server"></asp:TextBox> 

我做了调试,发现不执行textbox1_TextChanged功能

为什么?

+0

你应该设置标题'框TextChanged事件不会fired' – 2010-02-09 11:34:06

回答

8

您需要将AutoPostBack设置为true
看到msdn此:

要让TextChanged事件原因 立即发布,文本框 控件的AutoPostBack属性设置为 真。

+2

但要记住:“文本框Web服务器控件不会在用户每次进入一个击键时引发事件,只有当用户离开控件” – Codesleuth 2010-02-09 11:37:42

+0

这是由xhtml-tag的'changed'事件的定义引起的:) – 2010-02-09 11:39:34

+0

那么人们怎么会在每次击键时触发一个事件呢? – 2016-02-22 17:48:19

0

好了,迟到总比不到好:你声明的方法,严格的说,对于事件处理。但是你没有绑定事件处理函数,像这样:

<asp:TextBox Width="200" ID="textbox1" OnTextChanged="textbox1_TextChanged" runat="server"></asp:TextBox> 

你错过了什么:OnTextChanged="textbox1_TextChanged"

换句话说,你的方法永远不会被调用,因为你从来没有告诉控制该方法是该事件的处理程序。

0

我认为它也是值得注意的是TextChanged事件确实 火,如果文本价值实际上并没有改变,即设置文本 ,但你把它设置为它以前有相同的值。

+1

@Rob:感谢你的指导方针..我会看看建议的链接,并在审阅帖子时多加注意。再次感谢您的建议。 – 2016-02-23 04:30:16