Pues eso… que con la cabeza que tengo (se me olvidan las cosas o lo mismo mi disco duro ya está lleno, a saber) me he decidido a publicar este "truco" para ASP.NET usando páginas web ASPX, ya que hoy lo he necesitado y no me acordaba cómo había que hacerlo… o casi… ahora te explico el casi.
Asignar el foco a un control de una página web ASPX al cargarla
La idea es que hay que "darle el foco" al control en cuestión y aquí no vale eso de asignar un valor cero (0) a la propiedad TabIndex del control, que es lo que haríamos en una aplicación de escritorio (y casi me atrevería a decir que a una de XAML).
Otra cosa que se te puede ocurrir es asignar el foco al cargar "el formulario" (en este caso la página web), y por ahí iríamos bien… pero en el caso de las páginas web ASPX el evento Load (en realidad Page_Load) no se produce o al menos no podemos interceptarlo salvo que indiquemos en la directiva @Page que queremos hacerlo, esto lo conseguimos asignando un valor "true" a la propiedad AutoEventWireup (el valor predeterminado o por defecto, es "false").
Y uniendo todo lo dicho tendríamos algo así:
<%@ Page Language="vb" AutoEventWireup="true" Strict="true" %> <!DOCTYPE html> <script runat="server"> ' Para que se ponga el foco en el control indicado ' en @Page hay que indicar AutoEventWireup="true" Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) If IsPostBack = False Then txtTotal.Focus() End If End Sub </script>
Espero que te pueda ser útil
Nos vemos.
Guillermo
P.S.
Nota del 28/Oct/2012:
Mira esta actualización que seguro que te interesa también:
Asignar el foco a un control al cargar una página web aspx (ampliación y recapitulación)
…
Ojo!!!
«If IsPostBack = False Then» ‘ programacion optimista!
«If Not IsPostBack Then» ‘ programacion pesimista!
😉
yo es que «intento» ser optimista, jejeje