2010-02-09 221 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