如何在涉及回发时从代码隐藏将焦点设置为文本框

How to set Focus to a TextBox from codebehind when there is postback involved?

本文关键字:焦点 隐藏 设置 文本 代码      更新时间:2023-09-26

我有一个数据输入网络表单,有几个文本框会导致文本更改事件回发..之后,我正在使用代码隐藏将焦点设置为所需的文本框... TextBox2.Focus()但这仅适用于Visual Studio 2010,而不适用于2005。它不会给出任何错误或任何东西,但焦点进入 textBox2 几分之一秒,然后消失(可能是由于回发)。注意:我必须仅从代码后面设置焦点!如果需要,我已经准备好使用 JavaScript,但它必须从代码隐藏运行。

尝试以下 VB.NET 代码,在Postback后将javascript添加到加载的页面:

ClientScript.RegisterStartupScript(Me.GetType(), "Set TB Focus", "document.getElementById('" & TextBox2.ClientID & "').focus();", True)

这会在回发时将脚本写入页面,然后执行(因为它不在函数中)并设置文本框的焦点。

还有 C# 代码:

ClientScript.RegisterStartupScript(this.GetType(), "Set Tb Focus", "document.getElementById('" & TextBox2.ClientID & "').focus();", true);

尝试:

ClientScript.RegisterStartupScript(typeof(this), "Focus",
String.Format("document.GetElementById('{0}').focus;", txt.ClientID), true);

它注册一个javascript并聚焦它。

       ClientScript.RegisterStartupScript(this.GetType(), "focus", "document.getElementById('" + txtYourControlName.ClientID + "').focus();", true);