C# 未激发文本更改事件

C# 未激发文本更改事件,c#,asp.net,events,C#,Asp.net,Events,我需要在我的网页(用C#在ASP.NET中创建)中添加1个textbox事件,我在Page#Load函数中声明并使用ASP语法: protected void Page_Load(object sender, EventArgs e) { textbox1.TextChanged += new EventHandler(textbox1_TextChanged); } public void textbox1_TextChanged(object sender

我需要在我的网页(用C#在ASP.NET中创建)中添加1个textbox事件,我在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>

我进行了调试,发现notexecutetextbox1\u TextChanged函数


为什么?

您需要将
AutoPostBack
设置为
true

有关此信息,请参见:

要更改TextChanged事件的原因 如果是即时发布,请设置文本框 控件的AutoPostBack属性设置为 对


您需要将
AutoPostBack
设置为
true

有关此信息,请参见:

要更改TextChanged事件的原因 如果是即时发布,请设置文本框 控件的AutoPostBack属性设置为 对


好吧,迟做总比不做好:严格来说,您声明了一个方法,一个事件的处理程序。但您没有将事件绑定到处理程序,如下所示:

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

您错过的内容:
OnTextChanged=“textbox1\u TextChanged”


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

好吧,迟做总比不做强:严格地说,您声明了一个方法,一个事件的处理程序。但您没有将事件绑定到处理程序,如下所示:

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

您错过的内容:
OnTextChanged=“textbox1\u TextChanged”

换句话说,您的方法永远不会被调用,因为您从未告诉控件该方法是事件的处理程序

我认为还值得注意的是,TextChanged事件确实而不是 如果文本值没有实际更改,即设置了文本,则激发 但您将其设置为与以前相同的值

我认为还值得注意的是,TextChanged事件确实而不是 如果文本值没有实际更改,即设置了文本,则激发 但您将其设置为与以前相同的值


您应该将title设置为
TextChanged event not fired
您应该将title设置为
TextChanged event not fired
,但请记住:“TextBox Web服务器控件不会在用户每次输入击键时引发事件,只有在用户离开控件时才会引发事件。”这是由xhtml标记的
changed
事件的定义引起的:)那么如何在每次击键时触发事件?@Petalvin quick and dirty:连接到
keyup
并使用例如jQuery触发
change
。但老实说,我认为这个问题没有用,因为这意味着响应时间必须与笔划间隔相适应(取决于你的实际打字速度,大约每分钟300笔划,也就是每秒5笔划,这意味着响应时间为200ms)。在我的情况下,我已将“自动回发”设置为true,但我不理解当值设置为数据集中的文本框时,为什么文本更改服务器端事件未触发,请建议我是否可以手动触发该文本更改事件,因为该事件包含绑定页面中其他两个下拉列表的代码。但请记住:TextBox Web服务器控件不会在用户每次输入击键时引发事件,只有在用户离开控件时才会引发事件。“这是由xhtml标记的
changed
事件的定义引起的:)那么如何在每次击键时触发事件?@petalvin quick and dirty:attaching to
keyup
并使用例如jQuery触发
change
。但老实说,我认为这个问题没有用,因为这意味着响应时间必须与笔划间隔相适应(取决于你的实际打字速度,大约每分钟300笔划,也就是每秒5笔划,这意味着响应时间为200ms)。在我的情况下,我已将“自动回发”设置为true,但我不理解当值从数据集中设置为文本框时,为什么文本更改服务器端事件未触发,请建议我是否可以手动触发该文本更改事件,因为该事件包含绑定页面中其他两个下拉列表的代码。@Rob:感谢您提供的指导。。我会研究一下建议的链接,并在查看帖子时给予更多关注。再次感谢你的建议。@Rob:谢谢你的指导。。我会研究一下建议的链接,并在查看帖子时给予更多关注。再次感谢你的建议。