为什么我页面中的文本框会关注页面加载?

时间:2009-08-08 17:20:24

标签: asp.net focus pageload

我有一个带有文本框和按钮的页面。当页面加载时,通常会将焦点放在其中一个文本框中,我不希望这种情况发生。但是,我不想在页面加载事件中使用类似setfocus的东西,因为当单击按钮时页面将跳转。如何防止文本框或任何控件关注页面加载?

3 个答案:

答案 0 :(得分:1)

奇怪。默认情况下,除非您将焦点设置在页面上,否则页面不会关注任何表单输入。

我认为你必须在页面上取消Setfocus的所有焦点。

protected void Page_Load(object sender, EventArgs e)
{
    // make sure its not a postback
    if (!IsPostBack)
    {
        // your code
        InitForm();
        InitBlaBlaBla();
        SetFocusOnThis();
        SetFocusOnThat();

        // cancel all focus
        Focus();
    }
    else 
    {
        // this is a postback, 
        // set focus on control which make post back
        Control control = null;

        if (!string.IsNullOrEmpty(Page.Request.Params[postEventSourceID]))
        {
            control = Page.FindControl(Page.Request.Params[postEventSourceID]);
        }
        else
        {
            // if postEventSourceID is null, its a button
            // find it by iterating all controls

            foreach (string ctl in Page.Request.Form)
            {
                Control c = Page.FindControl(ctl);
                if (c is System.Web.UI.WebControls.Button)
                {
                    control = c;
                    break;
                }
            }
        }

        // finally 
        control.Focus();

    }
}

答案 1 :(得分:1)

  

基本上我想做的就是什么时候   页面加载的结果   从另一页重定向,不要   只需将焦点设置在任何文本框中   正常加载页面,但如果   页面加载由于单击a   控制页面,保持焦点   在该控件上/附近。

要完成此操作,您必须测试回发。如果您检测到页面已被回发,您可以根据需要将焦点设置到控件。否则,页面不会回发(GET),因此您可以避免将焦点放在控件上。

据我所知,默认情况下,ASP.NET Webforms不会将注意力集中在任何textbox es上。您确定没有一些代码隐藏方法将焦点放在textbox上吗?

答案 2 :(得分:0)

事实证明,freetextbox控件在IE7和IE6上表现出这种行为。这是他们正在调查的一个错误。