I am trying to set the focus to the user name TextBox which is inside an ASP.NET Login control.
I have tried to do this a couple of ways but none seem to be working. The page is loading but not going to the control.
Here is the code I've tried.
SetFocus(this.loginForm.FindControl("UserName"));
And
TextBox tbox = (TextBox)this.loginForm.FindControl("UserName");
if (tbox != null)
{
tbox.Focus();
} // if
I've been struggling with this too and I've found a solution that seems to work very well even with deeply nested controls (like AspDotNetStorefront a.k.a. ASPDNSF uses). Note the following code called from the
Page_PreRender
routine. I knew the name of the TextBox I wanted to give focus to and so I just calledFocusNestedControl(Me, "UserName")
. I just usedMe
here because all the routine needs is a parent of the control to get focus; it doesn't matter which parent.My problem arrized when i moved login control to a custom control and tried to find UsernameTextBox at the OnInit() method. OnInit of a control is executed before OnInit of Page and this is why no Form control have been created.
I moved the call to UsernameTextBox to the OnLoad function and it worked correctly.
You can set focus directly on LoginControl and it will automatically set focus on first field in control. In your case:
More info on MSDN: How to: Set Focus on ASP.NET Web Server Controls