2010-02-09 7 views
1

Je dois ajouter 1 événement pour textbox dans ma page Web (créé dans ASP.NET avec C#) et je déclare dans la fonction Page_Load et en syntaxe asp:texte non tiré

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; 
    } 
} 

et en Page asp i utilisé cette déclaration:

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

Je l'ai mise au point et a constaté que execute textbox1_TextChanged fonction

Pourquoi?

+0

vous devez définir le titre de 'événement TextChanged pas fired' –

Répondre

8

vous devez définir AutoPostBack à true.
voir msdn pour cela:

Pour avoir l'événement TextChanged la cause un affichage immédiat, définissez la propriété AutoPostBack du contrôle TextBox à vrai.

+2

Mais rappelez-vous: « Le contrôle du serveur Web TextBox ne soulève pas un événement chaque fois que l'utilisateur entre dans une séquence de touches, uniquement lorsque l'utilisateur quitte le contrôle. » – Codesleuth

+0

qui est causée par la définition de l'événement 'changed' de la balise xhtml :) –

+0

Comment alors déclencher un événement à chaque frappe? –

0

Eh bien, mieux vaut tard que jamais: vous avez déclaré une méthode, strictement parlant, un gestionnaire pour l'événement. Mais vous ne l'avez pas lier l'événement au gestionnaire, comme ceci:

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

Qu'est-ce que vous avez manqué: OnTextChanged="textbox1_TextChanged"

En d'autres termes, votre méthode ne serait jamais appelé parce que vous jamais dit le contrôle de cette méthode était un gestionnaire pour l'événement.

0

Je pense que c'est aussi intéressant de noter que l'événement TextChanged ne pas feu si la valeur de texte n'a pas réellement changé, à savoir que vous définissez le texte mais vous définissez à la même valeur qu'il avait auparavant.

+1

@Rob: merci pour les lignes directrices .. Je vais jeter un coup d'oeil sur le lien suggéré et je ferai plus attention en passant en revue les messages. encore une fois merci pour les suggestions. –

Questions connexes