C# 确定因文本框更改而发生回发的时间

C# 确定因文本框更改而发生回发的时间,c#,asp.net,events,C#,Asp.net,Events,我有一个usercontrol,它的autopostback设置为true。当用户输入文本并移出文本框时,asp.net将触发回发事件。然而,它不是由文本框专门处理的,而是一个简单的回发-页面加载启动,然后生活继续 我需要的是知道这个文本框触发了事件的方法。然后我想触发我自己的自定义事件,以便我的主页可以订阅它,并在文本框更改时处理该事件 起初我认为我可以捕获发送者——我假设发送者是文本框,但它似乎是页面本身 有人有什么想法吗?这是我动态创建的usercontrol还是textbox?如果是这样

我有一个usercontrol,它的autopostback设置为true。当用户输入文本并移出文本框时,asp.net将触发回发事件。然而,它不是由文本框专门处理的,而是一个简单的回发-页面加载启动,然后生活继续

我需要的是知道这个文本框触发了事件的方法。然后我想触发我自己的自定义事件,以便我的主页可以订阅它,并在文本框更改时处理该事件

起初我认为我可以捕获发送者——我假设发送者是文本框,但它似乎是页面本身


有人有什么想法吗?

这是我动态创建的usercontrol还是textbox?如果是这样,您必须在page_load事件中重新创建该控件,并且该事件应该像正常情况一样在文本框中激发。

page load sender将始终是ASP.default_aspx,因为该页面是调用该事件的页面

您可以连接到偶数OnTextChanged,其中发送者将是已更改或导致回发的文本框


请记住,页面加载总是在控件上的任何事件之前触发。

这可能会被忽略,但您是否确实为textbox的TextChanged事件编码了事件?如果您将其设置为autopostback,但从未实际为其创建事件,则只会获得页面加载和其他相关事件。

我认为您缺少一些内容,因此我想一步一步地解释一下:

您的文本框应该是这样的:

<asp:TextBox runat="server" ID="TextBox1" AutoPostBack="true" 
OnTextChanged="TextBox1_TextChanged"></asp:TextBox>
protected void TextBox1_TextChanged(object sender, EventArgs e)
{
    string str = TextBox1.Text;
}
注意:如果您想在代码隐藏中附加事件,可以通过以下方式执行:

TextBox1.TextChanged +=new EventHandler(TextBox1_TextChanged);

但是,如果您谈论的是自定义控件,那么应该实现IPostBackDataHandler接口来引发事件。

正如在其他答案中提到的,您需要处理“OnTextChanged”事件

<asp:TextBox ID="TextBox1" runat="server" OnTextChanged="TextBox1_TextChanged"></asp:TextBox>

private void TextBox1_TextChanged(object sender, System.EventArgs e)
{
    TextBox txt = (TextBox)sender;
    string id = txt.ID;

    switch(id)
    {
        case "TextBox1":
            break;
    }
}

私有void TextBox1\u TextChanged(对象发送者,System.EventArgs e)
{
TextBox txt=(TextBox)发送方;
字符串id=txt.id;
开关(id)
{
案例“TextBox1”:
打破
}
}

如果查看页面的源代码,输入的onchange事件中应该有一个u doPostBack调用。参数是什么?谢谢大家的反馈。我没有意识到我还必须处理ContextChanged事件-起初我以为只要按一下键就会触发。。。这是不可取的。下次我必须阅读文档:)