我有一个带有文本框和按钮的页面。当页面加载时,通常会将焦点放在其中一个文本框中,我不希望这种情况发生。但是,我不想在页面加载事件中使用类似setfocus的东西,因为当单击按钮时页面将跳转。如何防止文本框或任何控件关注页面加载?
答案 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上表现出这种行为。这是他们正在调查的一个错误。