0

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

4

3 回答 3

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();

    }
}
于 2009-08-08T19:12:01.797 回答
1

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

为此,您必须测试post back。如果您检测到页面已被回发,您可以按照您的意图将焦点设置到控件。否则,页面不会被回发 (GET),因此您可以避免将焦点放在控件上。

据我所知,默认情况下,ASP.NET Webforms 不会将焦点设置在任何textboxes 上。你确定你没有一些代码隐藏方法将焦点设置在textbox?

于 2009-08-08T19:12:23.527 回答
0

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

于 2009-08-11T23:39:32.440 回答